Luogu P1725 琪露诺
题目
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 琪露诺相关推荐
- 【洛谷】【动态规划+单调队列】P1725 琪露诺
[题目描述:] 在幻想乡,琪露诺是以笨蛋闻名的冰之妖精. 某一天,琪露诺又在玩速冻青蛙,就是用冰把青蛙瞬间冻起来.但是这只青蛙比以往的要聪明许多,在琪露诺来之前就已经跑到了河的对岸.于是琪露诺决定到河 ...
- 洛谷P1725琪露诺【单调队列+dp】
题目描述 在幻想乡,琪露诺是以笨蛋闻名的冰之妖精. 某一天,琪露诺又在玩速冻青蛙,就是用冰把青蛙瞬间冻起来.但是这只青蛙比以往的要聪明许多,在琪露诺来之前就已经跑到了河的对岸.于是琪露诺决定到河岸去追 ...
- 洛谷 - P1725 琪露诺(动态规划+单调队列优化)
题目链接:点击查看 题目大意:给出一个由n个节点组成的数轴,每个点上都有一个权值,现在规定当在点x处时,下一步只能去[x+l,x+r]之间的任意一点,现在规定终点是点n之后的所有节点,现在问如何规划路 ...
- 东方幻想乡系列模拟赛T2琪露诺题解
题目地址: http://fzoj.xndxfz.com/JudgeOnline/problem.php?id=2146&csrf=17peCLMJM49glhqlg9KaD7Agf5o5QY ...
- UESTC 1808 琪露诺的算术教室 打表+特判(找规律)
题目 琪露诺是个聪明的精灵,她非常擅长和数字有关的游戏 . 直到有一天灵梦进入了迷雾深林,她遇见了琪露诺,并向她提出了一个问题. 统计n个一位数字a组成的数乘以一位数b的结果中有多少个一位数字d.不超 ...
- 【DP、线段树优化】琪露诺
跟去年(2017)PJ第四题几乎是一样的?/吐血 DP方程可以很简单的推出来,f[i]=max{f[k]}+a[i] 然而这样做是O(n^2)的 看一下数据,200000的话要不nlogn 要不n 由 ...
- 琪露诺学习Vue.js的第二天
道德三皇五帝, 功名夏后商周, 五霸七雄闹春秋, 顷刻兴亡过首. 青史几行名姓, 北茫无数荒丘, 前人撒种后人收, 无非是龙争虎斗! 事件修饰符 1.使用 .stop 阻止冒泡 <div c ...
- BIT琪露诺的完美算法教室 3.初上征途的za
题目背景 励志成为全宇宙第一的口袋妖怪大师(咦?)的za终于要踏上了他的旅程.za匆匆忙忙地从大木博士那里拿了几个精灵球,从关都地区的真新镇出发了.没走几步,za来到了神奇的皮卡丘森林,眼前躺满了琳琅 ...
- 对于有关东方的题目的整理。。
东方赛高 此为总贴 收录以东方project为背景的题目. 模拟赛套题...(25道)无数据,有题面:二次联通门 1. luogu P3345 [ZJOI2015]幻想乡战略游戏 动态点分治(暴力水过 ...
- 单调队列-原理详解(deque实现)
一.单调队列的概念: 单调队列,即单调递减或单调递增的队列. 二.单调队列的性质: 1. 队列中的元素在原来的列表中的位置是由前往后的(随着循环顺序入队). 2. 队列中元素的大小是单调递增或递减 ...
最新文章
- explorer.exe应用程序错误说明 0X000000该内存不能为read的解决方法
- linux c 设置utc时间,C/C++标准库之转换UTC时间到local本地时间详解
- SonarQube代码质量管理平台安装与使用--转载
- Link State ID
- NET问答: Find() 和 Where().FirstOrDefault() 该如何选择 ?
- cmd中输入net start mysql 提示:服务名无效或者MySQL正在启动 MySQL无法启动
- telerik:RadTreeView树形菜单鼠标放上去展开菜单
- 一个讲课截屏 清明DAY2
- flask+socketio+echarts3 服务器监控程序(基于后端数据推送)
- srt乱码字幕中文显示解决办法
- java contenttype_SpringMVC Content-Type解析
- 最长公共子串_两个字符串的最长公共子串(后缀自动机)
- 构建大型网站架构服务器集群(转)
- 【VC++类型转换】CString类型到Char[]类型的转换
- 证明CLIQUE(团问题)是NP完全
- 为什么问多了,确实让人难以回答
- appcan中,地图插件调用百度导航
- 我的数模之旅(开始)
- SVN提交(commit)时必须填写备注信息设置
- opengl绘制三维人物luweiqi
热门文章
- 虚拟化系列-Windows server 2012 Remote桌面与应用
- 拒做背锅侠!如何利用网站性能优化驱动产品体验提升?
- High Reward Low Risk Strategies
- 【活动】为中秋献上祝福
- 多路视频直播播放器系统框架
- Linux虚拟机(Centos7)桥接模式静态ip配置/克隆后MAC地址配置、主机名修改
- .equal(String)与Stirng.equal()的区别
- 程序员真的需要读研究生么?
- 秋无痕 Windows XPSP3 集成安装增强版 V201306
- 【钉钉杯大学生大数据挑战赛】初赛 A:银行卡电信诈骗危险预测 Baseline