题目链接:https://codeforces.com/contest/1040
int x[1005];
void test_case() {
int n, a, b;
scanf("%d%d%d", &n, &a, &b);
for(int i = 1; i <= n; ++i)
scanf("%d", &x[i]);
int sum = 0;
for(int i = 1; i <= n / 2; ++i) {
if(x[i] == 0) {
if(x[n + 1 - i] == 1) {
puts("-1");
return;
} else if(x[n + 1 - i] == 2)
sum += a;
} else if(x[i] == 1) {
if(x[n + 1 - i] == 0) {
puts("-1");
return;
} else if(x[n + 1 - i] == 2)
sum += b;
} else {
if(x[n + 1 - i] == 0)
sum += a;
else if(x[n + 1 - i] == 1)
sum += b;
else
sum += 2 * min(a, b);
}
}
if(n % 2 == 1 && x[(n + 1) / 2] == 2)
sum += min(a, b);
printf("%d\n", sum);
}
void test_case() {
int n, k;
scanf("%d%d", &n, &k);
int c = (n + (2 * k + 1 - 1)) / (2 * k + 1);
int b;
for(b = 1;; ++b) {
if(b + k + (c - 1) * (2 * k + 1) >= n)
break;
}
printf("%d\n", c);
for(int i = 1; i <= c; ++i)
printf("%d%c", b + (i - 1) * (2 * k + 1), " \n"[i == c]);
}
Codeforces Round #507 (Div. 2, based on Olympiad of Metropolises)
原文:https://www.cnblogs.com/KisekiPurin2019/p/12245836.html