社区讨论
88 pts 求调
P15342「RedStone OI R1 B」浮木保卫战参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mlokauhk
- 此快照首次捕获于
- 2026/02/16 10:35 3 周前
- 此快照最后确认于
- 2026/02/20 17:55 3 周前
CPP
#include <bits/stdc++.h>
#define File(x) freopen(x".in", "r", stdin), freopen(x".out", "w", stdout)
#define rep(i, l, r) for (int i = (l), i##END = (r); i <= i##END; i ++)
#define dwn(i, r, l) for (int i = (r), i##END = (l); i >= i##END; i --)
using namespace std;
typedef long long i64;
template<typename T>
inline void Max(T &x, const T &k){ x = (x > k ? x : k); }
template<typename T>
inline void Min(T &x, const T &k){ x = (x < k ? x : k); }
namespace Sol{
const int N = 5e3 + 5;
int n, m, k, l1[N], r1[N], l2[N], r2[N];
int a[N], b[N], lg2[N];
int f[N][N], g[N][N];
int st1[N][14], st2[N][14], ans = 0;
void main(){
cin >> n >> m >> k;
lg2[0] = -1; rep(i, 1, 5000) lg2[i] = lg2[i >> 1] + 1;
rep(i, 1, n) cin >> a[i];
rep(i, 1, n) cin >> l1[i] >> r1[i];
rep(i, 1, m) cin >> b[i];
rep(i, 1, m) cin >> l2[i] >> r2[i];
auto q1 = [](int l, int r) -> int{
int k = lg2[r - l + 1];
return max(st1[l][k], st1[r - (1 << k) + 1][k]);
}; auto q2 = [](int l, int r) -> int{
int k = lg2[r - l + 1];
return max(st2[l][k], st2[r - (1 << k) + 1][k]);
};
rep(i, 1, k){
rep(j, 1, m) st1[j][0] = (b[j] > i ? 0 : g[i - b[j]][j]);
rep(p, 1, 13) rep(j, 1, m - (1 << p - 1))
st1[j][p] = max(st1[j][p - 1], st1[j + (1 << p - 1)][p - 1]);
rep(j, 1, n) f[i][j] = q1(l1[j], r1[j]);
rep(j, 1, n) st2[j][0] = a[j] + f[i][j];
rep(p, 1, 13) rep(j, 1, m - (1 << p - 1))
st2[j][p] = max(st2[j][p - 1], st2[j + (1 << p - 1)][p - 1]);
rep(j, 1, m) g[i][j] = q2(l2[j], r2[j]);
}
rep(i, 1, n) rep(j, 0, k) Max(ans, f[j][i] + a[i]);
cout << ans;
}
}
int main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int T = 1; while (T --) Sol :: main(); return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...