Codeforces Round #408 (Div. 2)ABCDE
分类:
IT文章
•
2022-08-03 12:16:16
A. Buying A House
分别向左右枚举,找到符合题意的点,输出最短的长度*10。
#include <bits/stdc++.h>
using namespace std;
int n, k, s, a[105];
int main()
{
scanf("%d%d%d", &n, &s, &k);
for(int i = 1; i <= n; i++) scanf("%d", &a[i]);
int m = 100;
for(int i = s+1; i <= n; i++){
if(a[i] > 0 && a[i] <= k) {
m = i-s;
break;
}
}
for(int i = s-1; i > 0; i--){
if(a[i] > 0&& a[i] <= k){
m = min(s-i, m);
break;
}
}
printf("%d
", m*10);
return 0;
}
View Code
B. Find The Bone
模拟即可,如果掉进洞里输出,否则输出最后结果
#include <bits/stdc++.h>
using namespace std;
int n, m, k, a[1000005];
int main() {
scanf("%d%d%d", &n, &m, &k);
for(int i = 1, x; i <= m; i++) {
scanf("%d", &x);
a[x] = 1;
}
if(a[1]) return 0*printf("1
");
else {
int u, v, x = 1;
while(k--) {
scanf("%d%d", &u, &v);
if(x == u) {
x = v;
if(a[v]) return 0*printf("%d
", x);
} else if(x == v) {
x = u;
if(a[u]) return 0*printf("%d
", x);
}
} printf("%d
", x);
}
return 0;
}
View Code
C. Bank Hacking
#include <bits/stdc++.h>
using namespace std;
int n, m, k, s, a[300005];
int vis_small[300005], vis_big[300005];
map<int, int>Map;
int main() {
scanf("%d", &n);
s = 1;
for(int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
Map[a[i]]++;
if(a[i] > a[s]) s = i;
}
int big = a[s], small = big - 1, big_num = Map[big], small_num = Map[small];
//printf("%d %d %d %d
", big, small, big_num, small_num);
for(int i = 0, u, v; i < n-1; i++) {
scanf("%d%d", &u, &v);
if(a[u] == big) vis_big[v]++;
else if(a[u] == small) vis_small[v]++;
if(a[v] == big) vis_big[u]++;
else if(a[v] == small) vis_small[u]++;
}
int ans = big+2;
for(int i = 1; i <= n; i++) {
int xx, yy;
if(a[i] == big) {
if(big_num == 1) xx = big;
else if(vis_big[i] == big_num-1) {
xx = big+1;
} else xx = big+2;
if(small_num == 0) yy = xx;
else if(vis_small[i] == small_num) {
yy = big;
} else yy = big+1;
} else if(a[i] == small) {
if(vis_big[i] == big_num) {
xx = big+1;
} else xx = big+2;
yy = xx;
} else {
if(vis_big[i] == big_num) {
xx = big+1;
} else xx = big+2;
yy = xx;
}
ans = min(ans, max(xx, yy));
}
printf("%d
", ans);
return 0;
}