https://codeforces.com/contest/1511
A
有两个服务器。
你是一个电影导演,你导演了电影。
喜欢的人会点赞,不喜欢的人会点踩。
而对于第三种人,如果他看到的踩比赞多,他就会点踩,否则点赞。
问最多可以收到多少个赞。
比较简单的贪心。
#include <bits/stdc++.h>
using namespace std;
int main() {
int T;
scanf("%d", &T);
while (T--) {
int n, a;
scanf("%d", &n);
int ans = 0;
while (n--) scanf("%d", &a), ans += (a != 2);
printf("%d\n", ans);
}
return 0;
} B
给定三个数的十进制下的位数
,你需要构造
置位的思路是最好的。
#include <bits/stdc++.h>
using namespace std;
int f[10] = {0, 1};
int main() {
for (int i = 2; i < 10; ++i) f[i] = f[i - 1] * 10;
int T;
scanf("%d", &T);
while (T--) {
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
a = f[a], b = f[b];
if (b != c) b += f[c];
printf("%d %d\n", a, b);
}
return 0;
} C
模拟即可。deque模拟1s都不要。
我的思路是:维护每个颜色最顶上的牌即可。因为只有它们会参与移动。
底层并没有跃迁的机会。
D
#include <bits/stdc++.h>
#define sc(x) scanf("%d", &(x))
#define rep(i, l, r) for (int i = l; i <= r; ++i)
using namespace std;
typedef long long ll;
const int N = 2e5 + 7;
char s[N];
int main() {
int n, k;
sc(n), sc(k);
int p = 0;
for (char i = 'a'; i < 'a' + k; ++i) {
s[++p] = i;
for (char j = 1 + i; j < 'a' + k; ++j) {
s[++p] = i;
s[++p] = j;
}
}
int i = 1;
while (n--) {
if (i > p) i = 1;
putchar(s[i++]);
}
putchar(10);
return 0;
} 
京公网安备 11010502036488号