【比赛链接】
【题解链接】
【A】Water The Garden
【思路要点】
- 按照题意模拟,或者简单计算一下均可。
- 时间复杂度\(O(N)\)。
【代码】
#include<bits/stdc++.h> using namespace std; const int MAXN = 5005; template <typename T> void read(T &x) { x = 0; int f = 1; char c = getchar(); for (; !isdigit(c); c = getchar()) if (c == '-') f = -f; for (; isdigit(c); c = getchar()) x = x * 10 + c - '0'; x *= f; } template <typename T> void write(T x) { if (x < 0) x = -x, putchar('-'); if (x > 9) write(x / 10); putchar(x % 10 + '0'); } template <typename T> void writeln(T x) { write(x); puts(""); } int a[MAXN]; int main() { int T; read(T); while (T--) { int n, k; read(n), read(k); for (int i = 1; i <= k; i++) read(a[i]); int ans = max(a[1], n + 1 - a[k]); for (int i = 1; i <= k - 1; i++) { int tmp = a[i + 1] - a[i]; ans = max(ans, 1 + tmp / 2); } writeln(ans); } return 0; }
【B】Tea Queue
【思路要点】
- 维护当前的排队的队列,模拟过程即可。
- 时间复杂度\(O(N*max(r_{i}))\)。
【代码】
#include<bits/stdc++.h> using namespace std; const int MAXN = 8005; template <typename T> void read(T &x) { x = 0; int f = 1; char c = getchar(); for (; !isdigit(c); c = getchar()) if (c == '-') f = -f; for (; isdigit(c); c = getchar()) x = x * 10 + c - '0'; x *= f; } template <typename T> void write(T x) { if (x < 0) x = -x, putchar('-'); if (x > 9) write(x / 10); putchar(x % 10 + '0'); } template <typename T> void writeln(T x) { write(x); puts(""); } int l[MAXN], r[MAXN], ans[MAXN], q[MAXN]; int main() { int T; read