description:

在幻想乡,琪露诺是以笨蛋闻名的冰之妖精。

某一天,琪露诺又在玩速冻青蛙,就是用冰把青蛙瞬间冻起来。但是这只青蛙比以往的要聪明许多,在琪露诺来之前就已经跑到了河的对岸。于是琪露诺决定到河岸去追青蛙。

小河可以看作一列格子依次编号为0到N,琪露诺只能从编号小的格子移动到编号大的格子。而且琪露诺按照一种特殊的方式进行移动,当她在格子i时,她只移动到区间[i+l,i+r]中的任意一格。你问为什么她这么移动,这还不简单,因为她是笨蛋啊。

每一个格子都有一个冰冻指数A[i],编号为0的格子冰冻指数为0。当琪露诺停留在那一格时就可以得到那一格的冰冻指数A[i]。琪露诺希望能够在到达对岸时,获取最大的冰冻指数,这样她才能狠狠地教训那只青蛙。

但是由于她实在是太笨了,所以她决定拜托你帮它决定怎样前进。

开始时,琪露诺在编号0的格子上,只要她下一步的位置编号大于N就算到达对岸。

solution:

这道题是一个显然的dp

应该算是线性dp里最简单的一种了(大雾

设f[i]f[i]f[i]表示到第i个点为止所能获得的最大收益。

所以

f[i]=a[i]+max⁡(f[i−r],...,f[i−l])f[i]=a[i]+\max (f[i-r],...,f[i-l])f[i]=a[i]+max(f[i−r],...,f[i−l])

但是这样我们发现只需要将r和l拉大距离就能把程序卡成O(n2)O(n^2)O(n2)的了。

所以还需要优化。

由此想到了单调队列。

code:

#include<cstdio>
#include<queue>
using namespace std;
long long a[300005];
struct ben
{long long id,c;bool operator < (const ben &a) const   {return a.c > c; }
};
priority_queue<ben>q;
long long f[300005];
int main()
{long long n,l,r;scanf("%lld%lld%lld",&n,&l,&r);for(long long i=0;i<=n;i++){scanf("%lld",&a[i]);}ben s;s.id=0;s.c=0;q.push(s);for(long long i=1;i<l;i++)f[i]=0;for(long long i=l;i<=n+r;i++){s.id=i-1;s.c=f[i-l];q.push(s);while(q.top().id<i-r){q.pop();}f[i]=q.top().c+a[i];}long long ans=0;for(long long i=n+1;i<=n+r;i++){ans=max(ans,f[i]); }printf("%lld\n",ans);return 0;return 0;
}

洛谷P1725 琪露诺 题解相关推荐

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

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

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

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

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

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

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

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

  5. 洛谷P1282 多米诺骨牌 题解

    洛谷P1282 多米诺骨牌 题解 题目链接:P1282 多米诺骨牌 题意: 多米诺骨牌由上下 222 个方块组成,每个方块中有 1∼61\sim61∼6 个点.现有排成行的上方块中点数之和记为 S1S ...

  6. 【动态规划】洛谷 P1282 多米诺骨牌

    [动态规划]洛谷 P1282 多米诺骨牌 时间限制: 1 Sec  内存限制: 128 MB 题目描述 多米诺骨牌有上下2个方块组成,每个方块中有1~6个点.现有排成行的 上方块中点数之和记为S1,下 ...

  7. 洛谷P1129 [ZJOI2007] 矩阵游戏 题解

    洛谷P1129 [ZJOI2007] 矩阵游戏 题解 题目链接:P1129 [ZJOI2007] 矩阵游戏 题意:给定一张有黑白棋子的正方形棋盘,问存不存在解法使得经过若干次交换行或列的操作后,左上角 ...

  8. 洛谷P3336 [ZJOI2013]话旧 题解

    洛谷P3336 [ZJOI2013]话旧 题解 题目链接:P3336 [ZJOI2013]话旧 题意:小林跟着银河队选手去了一趟宇宙比赛,耳濡目染,变得学术起来.回来后,他发现世界大变样了.比丘兽究级 ...

  9. 洛谷P4683 [IOI2008] Type Printer 题解

    洛谷P4683 [IOI2008] Type Printer 题解 题目链接:P4683 [IOI2008] Type Printer 题意: 你需要利用一台可移动的打印机打印出NNN个单词.这种可移 ...

  10. 洛谷P3647 [APIO2014] 连珠线 题解

    洛谷P3647 [APIO2014] 连珠线 题解 题目链接:P3647 [APIO2014] 连珠线 题意: 在达芬奇时代,有一个流行的儿童游戏称为连珠线.当然,这个游戏是关于珠子和线的.线是红色或 ...

最新文章

  1. ORL Faces Database介绍
  2. Win64 驱动内核编程-1.环境搭建
  3. 2016 湖南省省赛B题《有向无环图》
  4. 物理光学1 波动方程与基础波函数
  5. objective-c 编程总结(第六篇)运行时操作 - 方法交换
  6. Openldap命令详解
  7. 国产统一操作系统(UOS)安装、体验
  8. python-函数的位置参数
  9. Spring 注解教程
  10. MYSQL5.7离线安装报libnuma.so.1()(64bit) is needed by mysql-community-server-5.7.29-1.el7.x86_64
  11. jeesit 基于springMVC + mybatis配置多数据源的问题
  12. 一、Spring Boot整合redies
  13. 实验七matlab数值计算,数学应用软件实验报告---MATLAB的数值计算
  14. Python实现快速排序
  15. flac转换成mp3,flac转mp3方法
  16. 用户在图片上点选并标记位置,js实现
  17. Qt 学习之路 2(15):标准对话框 QMessageBox
  18. 解决UDP出现的10054错误
  19. .net使用pdfobject.js加载pdf文件
  20. win10休眠_Win10 系统 C 盘飘红,6 招瞬间腾出十几 GB 空间

热门文章

  1. matlab连接mysql有什么用_MATLAB连接SQLServer和MySql数据库
  2. php ajax 上传进度条,jQuery+php+ajax带进度条无刷新上传文件代码
  3. 服务器采集数据源码,Skywalking数据采集与收集源码分析
  4. 医学图像数据集:肝脏和肿瘤分割数据集
  5. 虚拟机无法重启服务器,windows2019虚拟机管理服务无法启动
  6. windows server 12 r2用Hyper-v安装centos7
  7. 怎样查找MP3音乐链接地址 用于QQ空间背景
  8. matlab 变限积分计算,Matlab变限积分计算【方法教程】
  9. 计算机基础知识教程表格日期,excel表格如何进行日期加减
  10. Python 唤起QQ对话框 QQ客服效果