P1725 琪露诺 题解(单调队列)
题目链接
解题思路
单调队列优化的\(dp\)。
状态转移方程:\(f[i]=max{f[i-l],f[i-l+1],...,f[i-r-1],f[i-r]}+a[i]\)
考虑单调队列优化。
因为刚学,不是很熟悉单调队列,特写一篇详细的解释。
\(queue\) 数组存储一个队列,他的头部和尾部的下标分别用head和tail表示。
\(f\) 数组是\(dp\)用到的数组。
首先读入每一个坐标处的价值\(a[i]\)
枚举\(i\),从\(l\)到\(n\),分别计算\(f[i]\),当\(i+r>n\)时,存储最大值ans。
单调队列的注释写在代码中。
AC代码
#include<stdio.h>
int i,n,l,r,a[200010],f[200010],ans=-2147483648;//这个题数据比较水,ans=0也能过,但理论上是不允许这样的
int queue[200010],head=0,tail=-1;
int main(){
	scanf("%d%d%d",&n,&l,&r);
	for(i=0;i<n;i++){
		scanf("%d",&a[i]);
	}
	for(i=l;i<=n;i++){
		while(head<=tail&&queue[head]+r<=i)head++;//如果头太靠前了,那就删掉
		while(head<=tail&&f[queue[tail]]<=f[i-l])tail--;//如果尾巴对应的a太小了,那就删掉
         //这两句保证了单调队列的不上升也即单调减特性,保证头永远是当前状态的最佳状态
		queue[++tail]=i-l;//存储上一次是从哪里来的
		f[i]=a[i]+f[queue[head]];//从上一步跳过来,跳到这里的最大值
		if(i>n-r&&f[i]>ans)ans=f[i];
	}
	printf("%d",ans);
	return 0;
}
P1725 琪露诺 题解(单调队列)的更多相关文章
- 洛谷P1725 琪露诺 (单调队列/堆优化DP)
		显然的DP题..... 对于位置i,它由i-r~i-l的位置转移过来,容易得到方程 dp[i]=dp[i]+max(dp[i−r],...,dp[i−l]). 第一种:n2的暴力,只能拿部分分. 1 ... 
- 洛谷 P1725 琪露诺 题解
		P1725 琪露诺 题目描述 在幻想乡,琪露诺是以笨蛋闻名的冰之妖精. 某一天,琪露诺又在玩速冻青蛙,就是用冰把青蛙瞬间冻起来.但是这只青蛙比以往的要聪明许多,在琪露诺来之前就已经跑到了河的对岸.于是 ... 
- 【洛谷】【动态规划+单调队列】P1725 琪露诺
		[题目描述:] 在幻想乡,琪露诺是以笨蛋闻名的冰之妖精. 某一天,琪露诺又在玩速冻青蛙,就是用冰把青蛙瞬间冻起来.但是这只青蛙比以往的要聪明许多,在琪露诺来之前就已经跑到了河的对岸.于是琪露诺决定到河 ... 
- 洛谷P1725琪露诺(单调队列优化dp)
		P1725 琪露诺 题目描述 在幻想乡,琪露诺是以笨蛋闻名的冰之妖精.某一天,琪露诺又在玩速冻青蛙,就是用冰把青蛙瞬间冻起来.但是这只青蛙比以往的要聪明许多,在琪露诺来之前就已经跑到了河的对岸.于是琪 ... 
- P1725 琪露诺
		P1725 琪露诺 单调队列优化dp 对于不是常数转移的dp转移,我们都可以考虑单调队列转移 然而我们要把数组开大 #include<cstdio> #include<algorit ... 
- luogu P1725 琪露诺
		二次联通门 : luogu P1725 琪露诺 /* luogu P1725 琪露诺 DP + 线段树 用线段树维护dp[i - R] ~ dp[i - L]的最大值 然后 转移方程是 dp[i] = ... 
- P1725 琪露诺(单调队列优化)
		描述:https://www.luogu.com.cn/problem/P1725 小河可以看作一列格子依次编号为0到N,琪露诺只能从编号小的格子移动到编号大的格子.而且琪露诺按照一种特殊的方式进行移 ... 
- 洛谷P1725 琪露诺
		传送门啦 本人第一个单调队列优化 $ dp $,不鼓励鼓励? 琪露诺这个题,$ dp $ 还是挺好想的对不,但是暴力 $ dp $ 的话会 $ TLE $ ,所以我们考虑用单调队列优化. 原题中说她只 ... 
- 洛谷—— P1725 琪露诺
		https://www.luogu.org/problem/show?pid=1725 题目描述 在幻想乡,琪露诺是以笨蛋闻名的冰之妖精.某一天,琪露诺又在玩速冻青蛙,就是用冰把青蛙瞬间冻起来.但是这 ... 
随机推荐
- 抓包 127.0.0.1 (loopback)  使用 tcpdump+wireshark
			直接使用 wireshark无法抓取 127.0.0.1环回的数据包,一种解决方法是先传到路由器再返回,但这样可能造成拥塞. Linux 先使用tcpdump抓包并输出为二进制文件,然后wiresha ... 
- HDU 6706 huntian oy(杜教筛 + 一些定理)题解
			题意: 已知\(f(n,a,b)=\sum_{i=1}^n\sum_{j=1}^igcd(i^a-j^a,i^b-j^b)[gcd(i,j)=1]\mod 1e9+7\),\(n\leq1e9\),且 ... 
- 杭电多校HDU 6586 String(预处理 + 贪心)题解
			题意: 给你一个串,现需要你给出一个子序列,满足26个约束条件,\(len(A_i) >= L_i\) 且 \(len(A_i) <= R_i\), \(A_i\)为从a到z的26个字母. ... 
- TypeScript TSConfig All In One
			TypeScript TSConfig All In One tsconfig.json https://www.typescriptlang.org/tsconfig https://www.typ ... 
- Web 安全漏洞 All In One
			Web 安全漏洞 All In One Web 安全 & 漏洞 输入输出验证不充分 SQL 注入 XSS self-XSS CSRF 目录穿越 文件上传 代码注入 命令注入 信息漏洞 暴力破解 ... 
- Gradle & Java
			Gradle & Java Gradle Build Tool I Modern Open Source Build Automation https://gradle.org/ https: ... 
- Bastion Host (BH)
			Bastion Host (BH) 堡垒机 堡垒主机是专门设计和构造成承受攻击网络上的专用计算机. 该计算机通常承载单个应用程序,例如代理服务器,并且所有其他服务都将被删除或限制以减少对计算机的威胁. ... 
- IoT & Raspberry Pi
			IoT & Raspberry Pi https://www.raspberrypi.org/ https://www.raspberrypi.org/training https://pro ... 
- vue & dynamic components
			vue & dynamic components https://vuejs.org/v2/guide/components-dynamic-async.html keep-alive htt ... 
- [转]Ubuntu16.04安装搜狗输入法
			原文地址:https://blog.csdn.net/u013894834/article/details/60357071,转载主要方便随时查阅,如有版权要求,请及时联系. 1.首先我们先去搜狗输入 ... 
