Atcoder Beginner Contest 366
比赛链接: Atcoder Beginner Contest 366
Github 链接: ABC366
A - Election 2
只有 \(T\) 或者 \(A\) 大于等于 \(N\) 的一半的时候输出 Yes,否则输出 No。
#include <bits/stdc++.h>
using namespace std;
inline int read() {
int x = 0, f = 1; char c = getchar();
while (c < '0' || c > '9') { if (c == '-') f = -1; c = getchar(); }
while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return x * f;
}
int main() {
int n = read(), t = read(), a = read();
if (t > n / 2 || a > n / 2) puts("Yes");
else puts("No");
return 0;
}
B - Vertical Writing
按照题意模拟。
#include <bits/stdc++.h>
using namespace std;
int n, len = 0;
string s[105];
int main() {
ios::sync_with_stdio(false); cin.tie(0);
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> s[i];
int size = s[i].size();
len = max(len, size); // 记录最大长度
}
for (int i = 0; i < len; i++) {
int num = 0;
for (int j = n; j; j--) {
int size = s[j].size();
if (i < size) {
for (int i = 1; i <= num; i++) putchar('*');
num = 0;
putchar(s[j][i]);
}
else num++; // 避免 * 出现在字符串末尾
}
putchar('\n');
}
return 0;
}
C - Balls and Bag Query
用数组记录写有 \(x\) 的球个数,同时记录有多少种不同的球。
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int q, vis[N], num = 0;
inline int read() {
int x = 0, f = 1; char c = getchar();
while (c < '0' || c > '9') { if (c == '-') f = -1; c = getchar(); }
while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return x * f;
}
int main() {
for (int i = 0; i <= 1000000; i++) vis[i] = 0;
q = read();
for (int i = 1; i <= q; i++) {
int opt = read();
if (opt == 3) printf("%d\n", num);
else {
int x = read();
if (opt == 1) {
if (!vis[x]) num++;
vis[x]++;
}
if (opt == 2) {
vis[x]--;
if (!vis[x]) num--;
}
}
}
return 0;
}
D - Cuboid Sum Query
三维数组的前缀和,具体实现看代码。
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 105;
int n, q, a[N][N][N], b[N][N], sum[N][N][N];
inline int read() {
int x = 0, f = 1; char c = getchar();
while (c < '0' || c > '9') { if (c == '-') f = -1; c = getchar(); }
while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return x * f;
}
signed main() {
n = read();
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
for (int k = 1; k <= n; k++) {
a[i][j][k] = read();
b[i][j] += a[i][j][k];
sum[i][j][k] = sum[i - 1][j][k] + sum[i][j - 1][k] - sum[i - 1][j - 1][k] + b[i][j];
}
}
}
q = read();
while (q--) {
int l1 = read(), r1 = read(), l2 = read(), r2 = read(), l3 = read(), r3 = read();
l1--, l2--, l3--;
int ans = sum[r1][r2][r3] - sum[l1][r2][r3] - sum[r1][l2][r3] - sum[r1][r2][l3] + sum[l1][l2][r3] + sum[l1][r2][l3] + sum[r1][l2][l3] - sum[l1][l2][l3];
printf("%lld\n", ans);
}
return 0;
}

浙公网安备 33010602011771号