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

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

小河可以看作一列格子依次编号为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

解题思路:
由于对于每一次iii,均是从arr[i+l]arr[i+l]arr[i+l]到arr[i+r]arr[i+r]arr[i+r]中挑选一个最大的值,于是我们就可以用单调队列维护这个最大值即可。

代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <set>
#include <utility>
#include <sstream>
#include <iomanip>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define inf 0x3f3f3f3f
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define lep(i,l,r) for(int i=l;i>=r;i--)
#define ms(arr) memset(arr,0,sizeof(arr))
//priority_queue<int,vector<int> ,greater<int> >q;
const int maxn = (int)1e5 + 5;
const ll mod = 1e9+7;
typedef pair<int,int> p;
p arr[200100];
deque<p> q;
int main()
{#ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin);#endif//freopen("out.txt", "w", stdout);//ios::sync_with_stdio(0),cin.tie(0);int n,l,r;scanf("%d %d %d",&n,&l,&r);rep(i,0,n) {scanf("%d",&arr[i].second);arr[i].first=i;}arr[n+1].second=0;arr[n+1].first=n+1;q.push_back(arr[n+1]);lep(i,n-l,0) {while(!q.empty()&&arr[i+l].second>=q.back().second) {q.pop_back();}q.push_back(arr[i+l]);if(q.front().first>i+r) {q.pop_front();}arr[i].second=arr[i].second+q.front().second;}printf("%d\n",arr[0].second);return 0;
}

洛谷P1725琪露诺【单调队列+dp】相关推荐

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

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

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

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

  3. CSP2019洛谷P5665:划分(单调队列,高精度)

    解析 自己写的时候写了二维单调队列优化的64分 一次过还是可以满意了啦 正解的关键结论是最优的方案的最后一段一定尽可能的短 原因嘛-显然 贪心的想,再最后一段的段首可以往前放的情况下肯定是要往前放的, ...

  4. 洛谷P2698 花盆Flowerpot【单调队列】

    题目描述 Farmer John has been having trouble making his plants grow, and needs your help to water them p ...

  5. 洛谷 P2698 [USACO12MAR]花盆Flowerpot 单调队列

    https://www.luogu.org/problemnew/show/P2698 题意中文的不说了: 做法:就是一个滑动区间维护最大值和最小值,首先,了解一条性质,对于满足要求的两个区间 (l1 ...

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

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

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

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

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

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

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

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

最新文章

  1. ajax从mysql提取数据在html中_Python骚操作,提取pdf文件中的表格数据!
  2. .so 依赖目录 cmake_cmake浅析
  3. SSM框架Spring+SpringMVC+MyBatis——详细整合教程
  4. Docker容器时间与宿主机同步
  5. 暴风集团被强制退市 暴风影音APP还在更新:0.99元VIP上线
  6. python情感词提取_Python 文本挖掘:使用情感词典进行情感分析(算法及程序设计)...
  7. 男子常用英文名及含义
  8. 使用Java实现word文档转图片 在线预览
  9. 服务器XP系统打印机共享设置,windowsxp系统打印机共享设置方法介绍
  10. 使用springboot实现远程控制
  11. Java实现 蓝桥杯 算法提高 三进制数位和
  12. python将xls转换为xlsx_python – 如何将xls转换为xlsx
  13. python3 陌生的角落(1):基础语法
  14. 平衡小车PID,就该这么调!!!
  15. yolo v1论文翻译-整理
  16. 清华大学周伯文老师课题组招聘助理教授/博士后/工程师
  17. android智能小车 论文,基于安卓手机蓝牙控制的智能小车设计毕业设计(论文).doc...
  18. sql--sqlsever--时间相关SQL语句--查询当前时间至前N天的数据
  19. 实时即未来,大数据项目车联网之原始数据实时ETL任务HBase调优【九】
  20. 在网商大会上马云的讲话

热门文章

  1. BugkuCTF-MISC题split
  2. java spring 多数据库_java – 使用多个数据源/数据库的Spring-Hibernate
  3. php phpexcel用法,PHPExcel用法总结
  4. 类库java_Java类库和常用类库介绍
  5. 如何清理和维护计算机,电脑的优化与维护操作教程
  6. .net core高并发_高并发下的Node.js与负载均衡
  7. 上百台linux的服务器互信,批量自动建立linux服务器之间的ssh互信
  8. python预测新航线的票价_浙江长龙航空有限公司四条新航线(线路+票价)
  9. 三维空间坐标的旋转算法详解_视觉slam | 三维空间刚体运动的五种表达:旋转矩阵 变化矩阵 欧拉角 旋转向量 四元数及互相转换...
  10. mysql二级缓存redis_SpringBoot+Mybatis+redis(二级缓存)搭建