社区讨论
有人能给这个代码一个hack吗
P9400「DBOI」Round 1 三班不一般参与者 1已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mhz4brq3
- 此快照首次捕获于
- 2025/11/15 01:14 4 个月前
- 此快照最后确认于
- 2025/11/16 13:50 4 个月前
CPP
#include <bits/stdc++.h>
#define rep(i, l, r) for (int i = (l); i <= (int)(r); i++)
#define per(i, l, r) for (int i = (r); i >= (int)(l); i--)
#define Debug(...) fprintf(stderr, __VA_ARGS__)
#define max(a, b) (!((a) < (b)) ? (a) : (b))
#define min(a, b) ((a) < (b) ? (a) : (b))
using namespace std;
using i64 = long long;
#define int i64
const int maxn = 1000050, mod = 998244353, B = 700;
int l[maxn], r[maxn], a, b, n, dp[maxn];
int R(int l, int r, int b) {
if (r < b) {
return r - l + 1;
} else if (l <= b && b <= r) {
return b - l;
} else {
return 0;
}
}
int calc(int L, int R) {
int ans = 1;
rep(i, L, R) {
if (b <= l[i]) {
ans = ans * (r[i] - l[i] + 1) % mod;
} else {
ans = ans * max(0, r[i] - b + 1) % mod;
}
}
return ans;
}
signed main() {
cin.tie(nullptr)->sync_with_stdio(false);
cin >> n >> a >> b;
b++;
rep(i, 1, n) {
cin >> l[i] >> r[i];
}
dp[0] = 1;
rep(i, 1, n) {
dp[i] = dp[i - 1] * (r[i] - l[i] + 1) % mod;
if (i - a - 1 >= 0) {
dp[i] = (dp[i] - dp[i - a - 1] * calc(i - a + 1, i) * R(l[i - a], r[i - a], b) % mod + mod) % mod;
} if (i == a) {
dp[i] = (dp[i] - calc(1, i) + mod) % mod;
}
dp[i] %= mod;
}
cout << dp[n] << "\n";
return 0;
}
现在是sub3不过,对拍了结果好像没有拍出来
回复
共 1 条回复,欢迎继续交流。
正在加载回复...