洛谷 P1725 琪露诺

题目描述

在幻想乡,琪露诺是以笨蛋闻名的冰之妖精。某一天,琪露诺又在玩速冻青蛙,就是用冰把青蛙瞬间冻起来。但是这只青蛙比以往的要聪明许多,在琪露诺来之前就已经跑到了河的对岸。于是琪露诺决定到河岸去追青蛙。小河可以看作一列格子依次编号为0到N,琪露诺只能从编号小的格子移动到编号大的格子。而且琪露诺按照一种特殊的方式进行移动,当她在格子i时,她只会移动到i+L到i+R中的一格。你问为什么她这么移动,这还不简单,因为她是笨蛋啊。每一个格子都有一个冰冻指数A[i],编号为0的格子冰冻指数为0。当琪露诺停留在那一格时就可以得到那一格的冰冻指数A[i]。琪露诺希望能够在到达对岸时,获取最大的冰冻指数,这样她才能狠狠地教训那只青蛙。但是由于她实在是太笨了,所以她决定拜托你帮它决定怎样前进。开始时,琪露诺在编号0的格子上,只要她下一步的位置编号大于N就算到达对岸。

输入输出格式

输入格式:
第1行:3个正整数N, L, R

第2行:N+1个整数,第i个数表示编号为i-1的格子的冰冻指数A[i-1]

输出格式:
一个整数,表示最大冰冻指数。保证不超过2^31-1

输入输出样例

输入样例#1:
5 2 3
0 12 3 11 7 -2
输出样例#1:
11

说明

对于60%的数据:N <= 10,000

对于100%的数据:N <= 200,000

对于所有数据 -1,000 <= A[i] <= 1,000且1 <= L <= R <= N

思路:

这题很容易想到需要DP思想,每跳到一个格子k,它当前的冰冻指数最优为max(dp [k-r~k-l])+a[k]。

题解:

#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
int a[500000];
int dp[500000];
priority_queue<int>q1,q2;//q1记录当前最大值,q2记录不能达到的状态
int main()
{int n,l,r;scanf("%d%d%d",&n,&l,&r);for(int i=0;i<=n;i++){scanf("%d",&a[i]);dp[i]=a[i];}for(int i=n-l;i>=0;i--){int x1=0,x2=0;q1.push(dp[i+l]);//下一步 if(i+r<n){q2.push(dp[i+r+1]);//下一步走不到终点 }if(q2.empty()){x1=q1.top();}if(!q2.empty()){x1=q1.top(),x2=q2.top();}while(x1==x2&&!q2.empty()){x1=q1.top(); x2=q2.top();q1.pop(); q2.pop();}if(i+r>n){dp[i]=max(dp[i],dp[i]+x1);//下一步能跳到终点 }else{dp[i]+=x1;//走不到,推过去 }}printf("%d",dp[0]);return 0;
}

洛谷 P1725 琪露诺相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. 洛谷 P1242 新汉诺塔

    原题链接 题目描述 设有n个大小不等的中空圆盘,按从小到大的顺序从1到n编号.将这n个圆盘任意的迭套在三根立柱上,立柱的编号分别为A.B.C,这个状态称为初始状态. 现在要求找到一种步数最少的移动方案 ...

  9. 【01背包】洛谷P1282多米诺骨牌

    题目描述 多米诺骨牌有上下2个方块组成,每个方块中有1~6个点.现有排成行的 上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|.例如在图8-1中,S1=6+1+1+1=9, ...

  10. 洛谷p1282多米诺骨牌

    题目描述 多米诺骨牌有上下2个方块组成,每个方块中有1~6个点.现有排成行的 上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|.例如在图8-1中,S1=6+1+1+1=9, ...

最新文章

  1. PAT(甲级)2020年春季考试 7-4 Replacement Selection
  2. 一步一步学习hadoop(七)
  3. python下什么-什么是Python?最全的python百科
  4. 欧拉路径 之 poj 2513 Colored Sticks
  5. .Net Core 环境安装
  6. error C2471和error C1083
  7. vue 筛选组件_记一个复杂组件(Filter)的从设计到开发
  8. css-样式的权重-圆角-rgba
  9. 蚂蚁森林:不存在网友反馈的“没有造林”的情况 干旱造成梭梭矮小
  10. GDAL读写矢量文件——Python
  11. Adsutil.vbs 在脚本攻击中的妙用
  12. 39种语言编写的Hello World程序
  13. 胶囊碰撞体(CapsuleCollider)
  14. ae万能弹性表达式_18种常用AE表达式解析【建议收藏】
  15. 大牛直播十万个为什么
  16. Python终端美化库Rich
  17. 试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适用范围。
  18. 轮子王-原创数据结构-V2.0--内存//二级指针//小样儿练习
  19. 【移动架构】Flutter vs React Native:最后一句话。
  20. python工程师的职业规划_一名Python开发工程师的职业规划

热门文章

  1. 我国大部地区遭罕见寒潮 23省区应急响应
  2. 凉宫春日的忧郁第二章
  3. JVM的垃圾回收Serial、Serial Old、Parallel Scavenge、Parallel Old的介绍和STW(Stop The World)
  4. 80个让你笑爆肚皮的程序员段子,不好笑算我输!
  5. 超越YOLOv4-tiny!YOLObile:移动设备上的实时目标检测 [左侧有码]
  6. 第六十一章 方法关键字 - Deprecated
  7. 装linux双系统有什么好处,科学网—Windows和Linux双系统安装教程 - 戴劭勍的博文...
  8. 根据程序流程图化程序流图_程序流程图有什么用?简单实用的流程图模板大全...
  9. web前端期末大作业—— HTML+CSS豪华车 (9页)
  10. C语言笔记 隐藏光标函数 带注释(详细)