洛谷P1725琪露诺【单调队列+dp】
题目描述
在幻想乡,琪露诺是以笨蛋闻名的冰之妖精。
某一天,琪露诺又在玩速冻青蛙,就是用冰把青蛙瞬间冻起来。但是这只青蛙比以往的要聪明许多,在琪露诺来之前就已经跑到了河的对岸。于是琪露诺决定到河岸去追青蛙。
小河可以看作一列格子依次编号为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】相关推荐
- 洛谷 - P1725 琪露诺(动态规划+单调队列优化)
题目链接:点击查看 题目大意:给出一个由n个节点组成的数轴,每个点上都有一个权值,现在规定当在点x处时,下一步只能去[x+l,x+r]之间的任意一点,现在规定终点是点n之后的所有节点,现在问如何规划路 ...
- 【洛谷】【动态规划+单调队列】P1725 琪露诺
[题目描述:] 在幻想乡,琪露诺是以笨蛋闻名的冰之妖精. 某一天,琪露诺又在玩速冻青蛙,就是用冰把青蛙瞬间冻起来.但是这只青蛙比以往的要聪明许多,在琪露诺来之前就已经跑到了河的对岸.于是琪露诺决定到河 ...
- CSP2019洛谷P5665:划分(单调队列,高精度)
解析 自己写的时候写了二维单调队列优化的64分 一次过还是可以满意了啦 正解的关键结论是最优的方案的最后一段一定尽可能的短 原因嘛-显然 贪心的想,再最后一段的段首可以往前放的情况下肯定是要往前放的, ...
- 洛谷P2698 花盆Flowerpot【单调队列】
题目描述 Farmer John has been having trouble making his plants grow, and needs your help to water them p ...
- 洛谷 P2698 [USACO12MAR]花盆Flowerpot 单调队列
https://www.luogu.org/problemnew/show/P2698 题意中文的不说了: 做法:就是一个滑动区间维护最大值和最小值,首先,了解一条性质,对于满足要求的两个区间 (l1 ...
- 【动态规划】洛谷 P1282 多米诺骨牌
[动态规划]洛谷 P1282 多米诺骨牌 时间限制: 1 Sec 内存限制: 128 MB 题目描述 多米诺骨牌有上下2个方块组成,每个方块中有1~6个点.现有排成行的 上方块中点数之和记为S1,下 ...
- 洛谷P1282 多米诺骨牌 题解
洛谷P1282 多米诺骨牌 题解 题目链接:P1282 多米诺骨牌 题意: 多米诺骨牌由上下 222 个方块组成,每个方块中有 1∼61\sim61∼6 个点.现有排成行的上方块中点数之和记为 S1S ...
- 东方幻想乡系列模拟赛T2琪露诺题解
题目地址: http://fzoj.xndxfz.com/JudgeOnline/problem.php?id=2146&csrf=17peCLMJM49glhqlg9KaD7Agf5o5QY ...
- UESTC 1808 琪露诺的算术教室 打表+特判(找规律)
题目 琪露诺是个聪明的精灵,她非常擅长和数字有关的游戏 . 直到有一天灵梦进入了迷雾深林,她遇见了琪露诺,并向她提出了一个问题. 统计n个一位数字a组成的数乘以一位数b的结果中有多少个一位数字d.不超 ...
最新文章
- ajax从mysql提取数据在html中_Python骚操作,提取pdf文件中的表格数据!
- .so 依赖目录 cmake_cmake浅析
- SSM框架Spring+SpringMVC+MyBatis——详细整合教程
- Docker容器时间与宿主机同步
- 暴风集团被强制退市 暴风影音APP还在更新:0.99元VIP上线
- python情感词提取_Python 文本挖掘:使用情感词典进行情感分析(算法及程序设计)...
- 男子常用英文名及含义
- 使用Java实现word文档转图片 在线预览
- 服务器XP系统打印机共享设置,windowsxp系统打印机共享设置方法介绍
- 使用springboot实现远程控制
- Java实现 蓝桥杯 算法提高 三进制数位和
- python将xls转换为xlsx_python – 如何将xls转换为xlsx
- python3 陌生的角落(1):基础语法
- 平衡小车PID,就该这么调!!!
- yolo v1论文翻译-整理
- 清华大学周伯文老师课题组招聘助理教授/博士后/工程师
- android智能小车 论文,基于安卓手机蓝牙控制的智能小车设计毕业设计(论文).doc...
- sql--sqlsever--时间相关SQL语句--查询当前时间至前N天的数据
- 实时即未来,大数据项目车联网之原始数据实时ETL任务HBase调优【九】
- 在网商大会上马云的讲话
热门文章
- BugkuCTF-MISC题split
- java spring 多数据库_java – 使用多个数据源/数据库的Spring-Hibernate
- php phpexcel用法,PHPExcel用法总结
- 类库java_Java类库和常用类库介绍
- 如何清理和维护计算机,电脑的优化与维护操作教程
- .net core高并发_高并发下的Node.js与负载均衡
- 上百台linux的服务器互信,批量自动建立linux服务器之间的ssh互信
- python预测新航线的票价_浙江长龙航空有限公司四条新航线(线路+票价)
- 三维空间坐标的旋转算法详解_视觉slam | 三维空间刚体运动的五种表达:旋转矩阵 变化矩阵 欧拉角 旋转向量 四元数及互相转换...
- mysql二级缓存redis_SpringBoot+Mybatis+redis(二级缓存)搭建