洛谷p1725琪露诺
来源:互联网 发布:民科笑话知乎 编辑:程序博客网 时间:2024/06/11 17:40
原题
这个人在i处只能跳到i+l~i+r处,用dp会超时,用贪心无法得出最优解(后面的值得不到)。
那么逆推,最后的状态固定,并且通过区间,可以判断使用单调队列,每个点i由i+l~i+r的最优值推出
#include<iostream>
#include<cstdio>
#include<iomanip>
#include<cstring>
#include<cmath>
using namespace std;
int n,l,r,a[200005],f[400005],q[200005],heade=1,taile=0;
int main()
{
cin>>n>>l>>r;
for(int i=0;i<=n;++i)
scanf("%d",&a[i]);
for(int i=n+l;i>=l;--i)
{
while(f[q[taile]]<=f[i]&&heade<=taile) taile--;
q[++taile]=i;
f[i-l]=max(f[i-l],f[q[heade]]+a[i-l]);
if(q[heade]==i+r&&heade<=taile) heade++;
}
cout<<f[0];
return 0;
}
阅读全文
0 0
- 洛谷 P1725 琪露诺
- 洛谷p1725琪露诺
- P1725 琪露诺
- P1725 琪露诺
- 洛谷【P1725】琪露诺 DP的优化
- [DP] [1D1D优化] [线段树] [Luogu P1725] 琪露诺
- Vijos P1725随机数生成器
- 洛谷1725 琪露诺(单调队列)
- 琪露诺
- 琪露诺的算术教室
- 琪露诺(单调队列)
- codevs 3943 数学奇才琪露诺
- 洛谷
- 洛谷
- 洛谷
- Problem 3 琪露诺(iceroad.cpp/c/pas)
- 2016-NJUST-琪露诺的算术教室
- TYZ 09/08 琪露诺的算术教室
- Android源码树中实现代码混淆
- 一个操作共享内存的类!可以方面的添加,删除数据,包括各种结构体!
- windwos平台下C++实现一个基于UDP的C/S模式通信示例
- 没有为该对象定义无参数的构造函数
- 时间片轮转法
- 洛谷p1725琪露诺
- 关于微信自定义分享的链接、标题、描述、图片都未生效问题详解
- Django 发送邮件配置
- Windows 10中轻松调整显示器的4个简单步骤
- android:clipToPadding和android:clipChildren
- solr查询语法详解
- RDD的特点
- [LeetCode 97] Interleaving String(Python)
- Spring MVC 基于阻塞队列 LinkedBlockingQueue 的同步长轮询功能实现