制作网页网站小说教程,哪个网站做外贸生意,网页界面设计案例分析,开发公司先进会员企业报告材料A:
打卡题
题目描述 一中队和二中队正在进行一场棒球比赛#xff0c;一中队是第一棒。
目前#xff0c;比赛已进行到第九局上半#xff0c;第九局下半即将开始。
一中队在 第i局 (1 i 9) 上半场得到了 Ai 分#xff0c;二中队在 第j局 (1 j 8) 下…A:
打卡题
题目描述 一中队和二中队正在进行一场棒球比赛一中队是第一棒。
目前比赛已进行到第九局上半第九局下半即将开始。
一中队在 第i局 (1 i 9) 上半场得到了 Ai 分二中队在 第j局 (1 j 8) 下半场得到了 Bj 分。
第九局上半结束时一中队的得分不低于二中队的得分。
求二中队在第九局下半至少需要得到多少分才能赢得比赛。
在这里如果比赛在第九局下半结束时打成平手结果就是平局。因此二中队要想获胜就必须在第九局下半结束时比一中队严格多得一分。
一中队在任何时候的得分都是截至该点的上半局总得分而二中队的得分则是下半局的总得分。
输入
A1 A2 A3 A4 A5 A6 A7 A8 A9
B1 B2 B3 B4 B5 B6 B7 B8
输出
打印二中队在第九局下半段至少需要得到多少分才能获胜。
样例输入1
0 1 0 1 2 2 0 0 1 1 1 0 0 0 0 1 0
样例输出1
5
样例输入2
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
样例输出2
1 #includeiostream
using namespace std;
int main(){int middle_school_10;int middle_school_20;for(int i0;i9;i){int a;cina;middle_school_1a;}for(int i0;i8;i){int x;cinx;middle_school_2x;}coutmiddle_school_1-middle_school_21;return 0;
}
B
简单题
题目描述 给你两个网格每个网格都有 N 行和 N 列分别称为网格 A 和网格 B 。
网格中的每个单元格都包含一个小写英文字母。
网格 A 的 i 行和 j 列的字符是 , 。
网格 B 的 i 行和 j 列的字符是 , 。
这两个网格正好有一个单元格不同。也就是说存在一对 (i, j) 不大于 N 的正整数使得 , ! , 。
求这个 (i, j)
输入
N
1,1 1,2... 1,
2,1 2,2... 2,
......
,1 ,2... ,
1,1 1,2... 1,
2,1 2,2... 2,
......
,1 ,2... ,
输出
设 (i, j) 是一对不大于 N 的正整数且 , ! , .按以下格式打印 (i, j)
i j
样例输入1
3 abc def ghi abc bef ghi
样例输出1
2 1
样例输入2
1 f q
样例输出2
1 1
样例输入3
10 eixfumagit vtophbepfe pxbfgsqcug ugpugtsxzq bvfhxyehfk uqyfwtmglr jaitenfqiq acwvufpfvv jhaddglpva aacxsyqvoj eixfumagit vtophbepfe pxbfgsqcug ugpugtsxzq bvfhxyehok uqyfwtmglr jaitenfqiq acwvufpfvv jhaddglpva aacxsyqvoj
样例输出3
5 9
思路直接暴力枚举
#includebits/stdc.h
using namespace std;
char s1[105][105],s2[105][105];
int main() {int n;cinn;for(int i1;in;i) for(int j1;jn;j) cins1[i][j];for(int i1;in;i){for(int j1;jn;j){cins2[i][j];if(s1[i][j]!s2[i][j]){couti j;return 0;}}}return 0;
}C
简单题
题目描述
你有一个空序列和 N 个球。球 (1 i N) 的大小是 2^{Ai} 。
你将进行 N 次运算。
在第i次操作中你将把第i个球添加到序列的右端然后重复下面的步骤
1. 如果序列中只有一个或更少的球则结束操作。
2. 如果序列中最右边的球和第二个最右边的球大小不同结束操作。
3. 如果序列中最右边的球和最右边的第二个球的大小相同则移除这两个球并在序列的右端添加一个新球其大小等于移除的两个球的大小之和。然后回到步骤 1重复上述过程。
计算 N 操作后序列中剩余的球数。
输入
N
A1 A2 ... An
输出
打印 N 操作后序列中的球数。
样例输入1
7 2 1 1 3 5 3 3
样例输出1
3
样例输入2
5 0 0 0 1 2
样例输出2
4
思路小球的操作符合栈的特性stack用栈存储小球数据
#includebits/stdc.h
using namespace std;
stackint s;//栈
int n,x;
int main(){cinn;for(int i1;in;i){cinx;s.push(x);while(s.size()2){int as.top();s.pop();int bs.top();s.pop();if(a!b){s.push(b);s.push(a);break;}else s.push(a1);}}couts.size();return 0;
}
D
搜索题
题目描述
有一个行数为 H 列数为 W 的网格。有些单元格可能为零包含磁铁。
网格的状态由长度为 W 的 H 个字符串 S1, S2, ..., SH 表示。如果 Si 的 第j个 字符是 #则表示在从上往下的第i行和从左往右的第j列的单元格中有磁铁如果是.则表示单元格是空的。
身穿铁甲的小奇可以在网格中做如下移动 如果与当前单元格垂直或水平相邻的任何一个单元格中含有磁铁他就不能移动。 否则他可以移动到任何一个垂直或水平相邻的单元格。 但是他不能离开网格。
对于每个没有磁铁的单元格将其自由度定义为他从该单元格重复移动所能到达的单元格数。求网格中所有没有磁铁的单元格的最大自由度。
这里在自由度的定义中他可以通过重复移动到达的单元格 指的是从初始单元格通过一定的移动序列可能是零移动可以到达的单元格。不一定要有一个移动序列能从初始单元格开始访问所有这些可到达的单元格。具体来说每个单元格本身没有磁铁总是包含在从该单元格可到达的单元格中。
输入
H W
S1
S2
...
输出
打印所有磁铁的最大自由度。
样例输入1
3 5 .#... ..... .#..#
样例输出1
9
样例输入2
3 3 ..# #.. ..#
样例输出2
1
思路我们先看样例1让 (i,j) 表示从上往下第 i 行从左往上第 j 列的单元格。如果小奇开始于 (2,3) 那么可能的移动包括 (2,3) - (2,4) - (1,4) - (1,5) - (2,5) (2,3) - (2,4) - (3,4) (2,3) - (2,2) (2,3) - (1,3) (2,3) - (3,3) 因此包括他经过的单元格在内他至少可以从 (2,3) 到达九个单元格。
实际上没有其他单元格可以到达因此 (2,3) 的自由度为 9 。
这是所有没有磁铁的单元格的最大自由度因此打印 9 。
稍微分析一下可以用BFS来解
#include bits/stdc.h
using namespace std;
typedef pairint, int PII;
int dx[] {-1, 1, 0, 0}, dy[] {0, 0, -1, 1};
int ans 1, cnt 5;
int h, w;
int vis[1010][1010];
bool check(int x, int y) {bool isi true;for (int i 0; i 4; i ) {int u x dx[i], v y dy[i];if (vis[u][v] 2) isi false;}return isi;
}
void bfs(int x, int y) {int res 1;queuePII q;q.push({x, y});vis[x][y] 1;while (!q.empty()) { pairint, int t q.front(); q.pop(); int x1 t.first, y1 t.second; for (int i 0; i 4; i) { int x2 x1 dx[i], y2 y1 dy[i]; if (x2 1 || x2 h || y2 1 || y2 w) continue; if (vis[x2][y2] 1 || vis[x2][y2] 2) continue; if (!check(x2, y2)) { if (vis[x2][y2] cnt) continue; vis[x2][y2] cnt; res; } else { res; vis[x2][y2] 1; q.push(make_pair(x2, y2)); } } } ans max(ans, res);
}int main() {ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);cin h w;for (int i 1; i h; i ) {for (int j 1; j w; j ) {char c; cin c;if (c #) vis[i][j] 2;}}for (int i 1; i h; i ) {for (int j 1; j w; j ) {if (vis[i][j] 0 check(i, j)) {bfs(i, j);cnt 1;} }}cout ans \n;return 0;
}
E:
分析题
题目描述
在坐标平面上有 N 个点 P1, P2, ..., PN 其中点 Pi 的坐标为 (Xi, Yi) 。
两点 A 与 B 之间的距离 dist(A, B) 定义如下 一只兔子最初位于点 A 。 位置为 (x, y) 的兔子可以跳跃到 (x1, y1) 、 (x1, y-1) 、 (x-1, y1) 或 (x-1, y-1) 。 dist(A, B) 被定义为从 A 点到 B 点所需的最少跳跃次数。 如果经过任意次数的跳跃都无法从点 A 到达点 B 则设为 dist(A, B) 0 。
计算总和∑1-1∑1dist(Pi, Pj) 。
输入
N
X1 Y1
X2 Y2
...
Xn Yn
输出
将∑1-1∑1dist(Pi, Pj)的值打印为整数
样例输入1
3 0 0 1 3 5 6
样例输出1
3
样例输入2
5 0 5 1 7 2 9 3 8 4 6
样例输出2
11
思路先看样例1
P1 、 P2 和 P3 的坐标分别为 (0,0) 、 (1,3) 和 (5,6) 。
兔子可以通过 (0,0) - (1,1) - (0,2) - (1,3) 在三次跳跃中从 P1 到达 P2 但无法在两次或更少的跳跃中到达,所以是 dist(P1, P2) 3 。
兔子无法从 P1 到达 P3 也无法从 P2 到达 P3 因此是 dist(P1, P3) dist(P2, P3) 0 。
因此答案是∑12∑13dist(Pi, Pj)dist(P1, P2)dist(P1, P3)dist(P2, P3)3003 。
我们可以看出
兔子的移动是对角移动不太方便进行操作。我们可以把坐标轴旋转45°再放大两倍
所以兔子可以从( x , y ) (x,y)(x,y)跳跃到( x 2 , y ) ( x , y 2 ) ( x , y − 2 ) (x2,y) (x,y2) (x,y−2)(x2,y)(x,y2)(x,y−2)和( x − 2 , y ) (x−2,y)(x−2,y)
这道题是 曼哈顿距离 问题
出租车几何或曼哈顿距离Manhattan Distance是由十九世纪的赫尔曼·闵可夫斯基所创词汇 是种使用在几何度量空间的几何学用语用以标明两个点在标准坐标系上的绝对轴距总和。
图1中红线代表曼哈顿距离绿色代表欧氏距离也就是直线距离而蓝色和黄色代表等价的曼哈顿距离。曼哈顿距离——两点在南北方向上的距离加上在东西方向上的距离即d(i,j)|xi-xj||yi-yj|。对于一个具有正南正北、正东正西方向规则布局的城镇街道从一点到达另一点的距离正是在南北方向上旅行的距离加上在东西方向上旅行的距离因此曼哈顿距离又称为出租车距离。曼哈顿距离不是距离不变量当坐标轴变动时点间的距离就会不同。曼哈顿距离示意图在早期的计算机图形学中屏幕是由像素构成是整数点的坐标也一般是整数原因是浮点运算很昂贵很慢而且有误差如果直接使用AB的欧氏距离欧几里德距离在二维和三维空间中的欧氏距离的就是两点之间的距离则必须要进行浮点运算如果使用AC和CB则只要计算加减法即可这就大大提高了运算速度而且不管累计运算多少次都不会有误差。
图一
最后最后一定要把结果除以2我们放大了两倍
#includebits/stdc.h
using namespace std;
long long n,ans0;
vectorlong longx[2][2],y[2][2];
int main(){cinn;for(int i1;in;i){int x1,y1;cinx1y1;x[(x1y1)%2][abs(x1-y1)%2].push_back(x1y1);y[(x1y1)%2][abs(x1-y1)%2].push_back(x1-y1);}for(int i0;i2;i){for(int j0;j2;j){int nxx[i][j].size();int nyy[i][j].size();if(nx0) continue;sort(x[i][j].begin(),x[i][j].end());sort(y[i][j].begin(),y[i][j].end());long long prexx[i][j][0],preyy[i][j][0];for(int k1;knx;k){ansk*x[i][j][k]-prex;prexx[i][j][k];}for(int k1;kny;k){ansk*y[i][j][k]-prey;preyy[i][j][k];}}}coutans/2;return 0;
} 本期题解到此结束下期不见不散