社区讨论
数据疑似有点疯狂
P1725琪露诺参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @ltb1dm9m
- 此快照首次捕获于
- 2024/03/03 12:52 2 年前
- 此快照最后确认于
- 2024/03/03 15:18 2 年前
rt。将以下代码中注释处的 dp 换成 a ,竟然只 WA 一个subtask!
CPP#include <iostream>
#include <cstdio>
using namespace std;
const int MAXN = 2e5 + 10;
int n, L, R, a[MAXN], dp[MAXN], q[MAXN], head = 1, tail = 0;
int main(){
cin >> n >> L >> R;
for(int i=0; i<=n; i++){ scanf("%d", &a[i]); }
for(int i=0; i<=n-R; i++){ dp[i] = -2147483648; }
for(int i=n-R+1; i<=n; i++){ dp[i] = a[i]; }
for(int i=n-L; i>=0; i--){
q[++tail] = dp[i+L];
if(i+R+1 <= n && dp[i+R+1] == q[head]){ head++; } // 把这一行的 dp 错写成 a ,竟然只WA了一个subtask????
while(tail - head + 1 > 1 && q[tail] > q[tail-1]){
q[--tail] = q[tail];
}
dp[i] = max(dp[i], a[i] + q[head]);
}
cout << dp[0];
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...