2 字
1 分钟
Codeforces Round (2021-01-08)
A
#include <cstdio>#include <iostream>#include <algorithm>#include <cmath>#include <cstring>using namespace std;
int t, n;int main() { cin >> t; while(t--) { cin >> n; if(n == 1) printf("9\n"); else if(n == 2) printf("98\n"); else { printf("98"); for(int i = 3, j = 9; i <= n; i++) { printf("%d", j); j++; if(j == 10) j = 0; } puts(""); } } return 0;}B
#include <cstdio>#include <iostream>#include <algorithm>#include <cmath>#include <cstring>using namespace std;
const int maxn = 3e5 + 17;int t, n, a[maxn], ans, v[maxn], s[maxn];
inline int pos(int x) { if(a[x] > a[x - 1] && a[x] > a[x + 1]) return 1; else if(a[x] == a[x - 1] || a[x] == a[x + 1]) return 2; else if(a[x] < a[x - 1] && a[x] < a[x + 1]) return -1; return 0;}
inline int val(int x) { if(x == 1 || x == n) return 0; return (abs(pos(x)) == 1) ? 1 : 0;}
inline int ck(int x) { return val(x - 1) + val(x) + val(x + 1);}
int main() { scanf("%d", &t); while(t--) { scanf("%d", &n);
ans = 0; for(int i = 0; i <= n + 2; i++) a[i] = 0, v[i] = 0, s[i] = 0;
for(int i = 1; i <= n; i++) scanf("%d", &a[i]); if(n <= 4) { printf("0\n"); continue; }
for(int i = 1; i <= n; i++) v[i] = val(i); for(int i = 1; i <= n; i++) s[i] = v[i - 1] + v[i] + v[i + 1];
// for(int i = 1; i <= n; i++) printf("%d%c", v[i], " \n"[i == n]);
if(v[2] || v[n - 1]) ans = max(ans, 1); for(int i = 2; i < n; i++) { int st = a[i]; for(a[i] = a[i - 1] - 1; a[i] <= a[i - 1] + 1; a[i]++) { int tmp = ck(i); // for(int i = 1; i <= n; i++) printf("%d%c", a[i], " \n"[i == n]); // if(a[i] == 6) printf("%d %d\n", tmp, s[i]); if(tmp < s[i]) ans = max(ans, s[i] - tmp); } for(a[i] = a[i + 1] - 1; a[i] <= a[i + 1] + 1; a[i]++) { int tmp = ck(i); if(tmp < s[i]) ans = max(ans, s[i] - tmp); } a[i] = st; }
ans *= -1; for(int i = 1; i <= n; i++) ans += v[i]; printf("%d\n", ans); } return 0;} 分享
如果这篇文章对你有帮助,欢迎分享给更多人!
Codeforces Round (2021-01-08)
https://blog.treesonsnow.com/posts/codeforces-round-2021-01-08/ 部分信息可能已经过时
相关文章 智能推荐