- P1725 琪露诺
- 单调队列维护 固定距离区间内的最大值,逆向进行DP转移即可。最后DP[0]即为答案。
-
#include<bits/stdc++.h> using namespace std; #define maxn 434567 int n,s,t,a[maxn]; deque<int>q; int main() { scanf("%d%d%d",&n,&s,&t); for(int i=0; i<=n; i++) scanf("%d",&a[i]); for(int i=n; i>=0; i--) { while(!q.empty()&&a[i+s]>a[q.back()])q.pop_back(); q.push_back(i+s); while(!q.empty()&&q.front()-i>t)q.pop_front(); a[i]+=a[q.front()]; } printf("%d\n",a[0]); return 0; }
P1725 琪露诺-dp-单调队列
最新推荐文章于 2026-03-07 13:16:38 发布
本文详细解析了P1725 琪露诺问题的解决思路,利用单调队列维护固定距离区间内的最大值,通过逆向进行动态规划转移,最终求得DP[0]作为问题的答案。


1482

被折叠的 条评论
为什么被折叠?



