题目

Luogu P1725 琪露诺

分析

看上去像一道DP题。用dp[i]表示到达坐标i时的最大冰冻指数,可以得到转移方程:

dp[i]=max{dp[k]}+a[i],k∈[i-l,i-r]

题目中提到,只要她下一步的位置编号大于N就算到达对岸,因此枚举i时要[l,n+r),因为[0,l]的部分她不可能到达,但[n,n+r)的部分都有可能是到对岸之前的那一步,走到对岸时到达的坐标。能够转移到当前坐标i的范围是[i-l,i-r](可以反推帮助理解),所以k∈[i-l,i-r]。总复杂度O(N^2),显然爆炸。
于是考虑优化,静心观察可以发现,[i-l,i-r]中只有最大的a[k]才会作为转移向下一步的状态,因为各个子区间是以一个单位坐标向对岸移动的,所以在每一个子区间中取较小的a[k]向之后的坐标转移不如选择最大的a[k]要优。换言之,这种贪心是正确的,因为一个坐标会被多个区间覆盖,所以不许考虑通常题目中舍弃当前最有以求得下一步更优,来达到全局最优的目的。
那么这显然具有单调性!维护一个单调递增的队列,存放每一个[i-l,i-r]中最优的a[k]的坐标。由于每个坐标或进队或出队,因此相当于进行了O(N)的访问,总复杂度即为O(N)。

代码

#include<cstdio>
#include<iostream>
using namespace std;
const int maxn=200002;
int a[maxn*2],dp[maxn*2],q[maxn*10];
int main()
{int n,l,r;scanf("%d%d%d",&n,&l,&r);for(int i=0;i<=n;i++)scanf("%d",&a[i]);int head=1,tail=1;for(int i=l;i<n+r;i++){while(head<=tail&&dp[i-l]>=dp[q[tail]]) tail--;q[++tail]=i-l;while(head<=tail&&q[head]<i-r)head++;dp[i]=dp[q[head]]+a[i];}int ans=-2147483647;for(int i=n+1;i<=n+r;i++)   ans=max(ans,dp[i]);printf("%d",ans);return 0;
}

Luogu P1725 琪露诺相关推荐

  1. 【洛谷】【动态规划+单调队列】P1725 琪露诺

    [题目描述:] 在幻想乡,琪露诺是以笨蛋闻名的冰之妖精. 某一天,琪露诺又在玩速冻青蛙,就是用冰把青蛙瞬间冻起来.但是这只青蛙比以往的要聪明许多,在琪露诺来之前就已经跑到了河的对岸.于是琪露诺决定到河 ...

  2. 洛谷P1725琪露诺【单调队列+dp】

    题目描述 在幻想乡,琪露诺是以笨蛋闻名的冰之妖精. 某一天,琪露诺又在玩速冻青蛙,就是用冰把青蛙瞬间冻起来.但是这只青蛙比以往的要聪明许多,在琪露诺来之前就已经跑到了河的对岸.于是琪露诺决定到河岸去追 ...

  3. 洛谷 - P1725 琪露诺(动态规划+单调队列优化)

    题目链接:点击查看 题目大意:给出一个由n个节点组成的数轴,每个点上都有一个权值,现在规定当在点x处时,下一步只能去[x+l,x+r]之间的任意一点,现在规定终点是点n之后的所有节点,现在问如何规划路 ...

  4. 东方幻想乡系列模拟赛T2琪露诺题解

    题目地址: http://fzoj.xndxfz.com/JudgeOnline/problem.php?id=2146&csrf=17peCLMJM49glhqlg9KaD7Agf5o5QY ...

  5. UESTC 1808 琪露诺的算术教室 打表+特判(找规律)

    题目 琪露诺是个聪明的精灵,她非常擅长和数字有关的游戏 . 直到有一天灵梦进入了迷雾深林,她遇见了琪露诺,并向她提出了一个问题. 统计n个一位数字a组成的数乘以一位数b的结果中有多少个一位数字d.不超 ...

  6. 【DP、线段树优化】琪露诺

    跟去年(2017)PJ第四题几乎是一样的?/吐血 DP方程可以很简单的推出来,f[i]=max{f[k]}+a[i] 然而这样做是O(n^2)的 看一下数据,200000的话要不nlogn 要不n 由 ...

  7. 琪露诺学习Vue.js的第二天

    道德三皇五帝, 功名夏后商周, 五霸七雄闹春秋, 顷刻兴亡过首. 青史几行名姓, 北茫无数荒丘, 前人撒种后人收, 无非是龙争虎斗! 事件修饰符 1.使用  .stop  阻止冒泡 <div c ...

  8. BIT琪露诺的完美算法教室 3.初上征途的za

    题目背景 励志成为全宇宙第一的口袋妖怪大师(咦?)的za终于要踏上了他的旅程.za匆匆忙忙地从大木博士那里拿了几个精灵球,从关都地区的真新镇出发了.没走几步,za来到了神奇的皮卡丘森林,眼前躺满了琳琅 ...

  9. 对于有关东方的题目的整理。。

    东方赛高 此为总贴 收录以东方project为背景的题目. 模拟赛套题...(25道)无数据,有题面:二次联通门 1. luogu P3345 [ZJOI2015]幻想乡战略游戏 动态点分治(暴力水过 ...

  10. 单调队列-原理详解(deque实现)

    一.单调队列的概念: 单调队列,即单调递减或单调递增的队列. 二.单调队列的性质: 1.  队列中的元素在原来的列表中的位置是由前往后的(随着循环顺序入队). 2.  队列中元素的大小是单调递增或递减 ...

最新文章

  1. explorer.exe应用程序错误说明 0X000000该内存不能为read的解决方法
  2. linux c 设置utc时间,C/C++标准库之转换UTC时间到local本地时间详解
  3. SonarQube代码质量管理平台安装与使用--转载
  4. Link State ID
  5. NET问答: Find() 和 Where().FirstOrDefault() 该如何选择 ?
  6. cmd中输入net start mysql 提示:服务名无效或者MySQL正在启动 MySQL无法启动
  7. telerik:RadTreeView树形菜单鼠标放上去展开菜单
  8. 一个讲课截屏 清明DAY2
  9. flask+socketio+echarts3 服务器监控程序(基于后端数据推送)
  10. srt乱码字幕中文显示解决办法
  11. java contenttype_SpringMVC Content-Type解析
  12. 最长公共子串_两个字符串的最长公共子串(后缀自动机)
  13. 构建大型网站架构服务器集群(转)
  14. 【VC++类型转换】CString类型到Char[]类型的转换
  15. 证明CLIQUE(团问题)是NP完全
  16. 为什么问多了,确实让人难以回答
  17. appcan中,地图插件调用百度导航
  18. 我的数模之旅(开始)
  19. SVN提交(commit)时必须填写备注信息设置
  20. opengl绘制三维人物luweiqi

热门文章

  1. 虚拟化系列-Windows server 2012 Remote桌面与应用
  2. 拒做背锅侠!如何利用网站性能优化驱动产品体验提升?
  3. High Reward Low Risk Strategies
  4. 【活动】为中秋献上祝福
  5. 多路视频直播播放器系统框架
  6. Linux虚拟机(Centos7)桥接模式静态ip配置/克隆后MAC地址配置、主机名修改
  7. .equal(String)与Stirng.equal()的区别
  8. 程序员真的需要读研究生么?
  9. 秋无痕 Windows XPSP3 集成安装增强版 V201306
  10. 【钉钉杯大学生大数据挑战赛】初赛 A:银行卡电信诈骗危险预测 Baseline