AtCoder Beginner Contest 375 A~C
A - Seats
洛谷链接
AtCoder链接
题目
一排有
座位的状态由长度为 # 和 . 组成。如果 #,则表示座位 .,则表示座位
求在
- 座位
i 和i+2 有人,座位i+1 无人。
代码
#include <bits/stdc++.h>
using namespace std;
int n, cnt;
string s;
int main()
{
scanf("%d", &n);
cin >> s;
for (int i = 0; i < n - 2; i ++ )
{
if (s[i] == '#' && s[i + 1] == '.' && s[i + 2] == '#')
cnt ++;
}
cout << cnt << '\n';
return 0;
}
B - Traveling Takahashi Problem
洛谷链接
AtCoder链接
题目
高桥位于二维坐标平面的原点。
他从点
求他从原点出发,依次访问
思路
定义数组
因为从
最后逐个计算,输出结果保留小数点后
代码
#include <bits/stdc++.h>
using namespace std;
int n, x[200010], y[200010];
double ans;
int main()
{
scanf("%d", &n);
for (int i = 1; i <= n; i ++ )
scanf("%d %d", &x[i], &y[i]);
x[n + 1] = y[n + 1] = 0;
for (int i = 0; i <= n; i ++ )
ans += sqrt(pow(x[i] - x[i + 1], 2) + pow(y[i] - y[i + 1], 2));
printf("%.20lf", ans);
return 0;
}
C - Spiral Rotation
洛谷链接
AtCoder链接
题目
有一个
每个单元格都涂成黑色或白色。如果 #,则 .,则为白色。
按以下顺序对
- 对于
i 和N+1-i 之间的所有整数对x,y ,用单元格(x,y) 的颜色替换单元格(y,N+1-x) 的颜色。同时对所有这些单元格对x,y 进行替换。
思路
当
原方格
根据上面的讨论,如果
因此,如果
值
代码
#include <bits/stdc++.h>
using namespace std;
int n, d, ni, nj, ti, tj;
char a[3010][3010], ans[3010][3010];
int main()
{
scanf("%d", &n);
for (int i = 0; i < n; i ++ )
{
for (int j = 0; j < n; j ++ )
cin >> a[i][j];
}
for (int i = 0; i < n; i ++ )
{
for (int j = 0; j < n; j ++ )
{
d = min({i + 1, j + 1, n - i, n - j});
ni = i;
nj = j;
for (int _ = 0; _ < d % 4; _ ++ )
{
ti = nj;
tj = n - 1 - ni;
ni = ti;
nj = tj;
}
ans[ni][nj] = a[i][j];
}
}
for (int i = 0; i < n; i ++ )
{
for (int j = 0; j < n; j ++ )
cout << ans[i][j];
puts("");
}
return 0;
}