单调队列优化DP || [Poi2014]Little Bird || BZOJ 3831 || Luogu P3572
题解:
N<=1e6 Q<=25
F[i]表示到达第i棵树时需要消耗的最小体力值
F[i]=min(F[i],F[j]+(D[j]>=D[i]))  (j>=i-K)
使用单调队列维护
越小的越优,在写单调队列时,让F值最小的数越前
因为F[i]-F[j]最多等于1
然后如果F值相同,则D越大的越优,因为D越大,后面不用+1的概率越大
大概就是这样
代码:
#include<cstdio>
#include<cstring>
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
using namespace std;
int rd(){
int x=; char c=getchar();
while(c<''||c>'') c=getchar();
while(c>=''&&c<=''){x=x*+c-''; c=getchar();}
return x;
}
const int maxn=1e6+,maxq=,inf=<<;
int N,D[maxn],F[maxn],Q,K,f1,f2;
int que[maxn];
int main(){
N=rd();
for(int i=;i<=N;i++) D[i]=rd();
Q=rd();
while(Q--){
f1=;f2=;
que[++f2]=;
K=rd();
for(int i=;i<=N;i++){
while(f1<=f2 && que[f1]<i-K) f1++;
if(f1<=f2) F[i]=F[que[f1]]+(D[que[f1]]<=D[i]);
while(f1<=f2 && F[i]<F[que[f2]]) f2--;
while(f1<=f2 && F[i]==F[que[f2]] && D[i]>D[que[f2]]) f2--;
que[++f2]=i;
}
printf("%d\n",F[N]);
}
return ;
}
By:AlenaNuna
单调队列优化DP || [Poi2014]Little Bird || BZOJ 3831 || Luogu P3572的更多相关文章
- 单调队列优化DP || [NOI2005]瑰丽华尔兹 || BZOJ 1499 || Luogu P2254
		
题外话:题目极好,做题体验极差 题面:[NOI2005]瑰丽华尔兹 题解: F[t][i][j]表示第t时刻钢琴位于(i,j)时的最大路程F[t][i][j]=max(F[t-1][i][j],F[t ...
 - P4381 [IOI2008]Island(基环树+单调队列优化dp)
		
P4381 [IOI2008]Island 题意:求图中所有基环树的直径和 我们对每棵基环树分别计算答案. 首先我们先bfs找环(dfs易爆栈) 蓝后我们处理直径 直径不在环上,就在环上某点的子树上 ...
 - 【bzoj3831】[Poi2014]Little Bird  单调队列优化dp
		
原文地址:http://www.cnblogs.com/GXZlegend/p/6826475.html 题目描述 In the Byteotian Line Forest there are t ...
 - BZOJ_3831_[Poi2014]Little Bird_单调队列优化DP
		
BZOJ_3831_[Poi2014]Little Bird_单调队列优化DP Description 有一排n棵树,第i棵树的高度是Di. MHY要从第一棵树到第n棵树去找他的妹子玩. 如果MHY在 ...
 - BZOJ 1499 [NOI2005] 瑰丽华尔兹 | 单调队列优化DP
		
BZOJ 1499 瑰丽华尔兹 | 单调队列优化DP 题意 有一块\(n \times m\)的矩形地面,上面有一些障碍(用'#'表示),其余的是空地(用'.'表示).每时每刻,地面都会向某个方向倾斜 ...
 - bzoj 1499 [NOI2005]瑰丽华尔兹——单调队列优化dp
		
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1499 简单的单调队列优化dp.(然而当时却WA得不行.今天总算填了坑) 注意滚动数组赋初值应 ...
 - 【笔记篇】单调队列优化dp学习笔记&&luogu2569_bzoj1855股票交♂易
		
DP颂 DP之神 圣洁美丽 算法光芒照大地 我们怀着 崇高敬意 跪倒在DP神殿里 你的复杂 能让蒟蒻 试图入门却放弃 在你光辉 照耀下面 AC真心不容易 dp大概是最经久不衰 亘古不化的算法了吧. 而 ...
 - 单调队列优化DP,多重背包
		
单调队列优化DP:http://www.cnblogs.com/ka200812/archive/2012/07/11/2585950.html 单调队列优化多重背包:http://blog.csdn ...
 - bzoj1855: [Scoi2010]股票交易--单调队列优化DP
		
单调队列优化DP的模板题 不难列出DP方程: 对于买入的情况 由于dp[i][j]=max{dp[i-w-1][k]+k*Ap[i]-j*Ap[i]} AP[i]*j是固定的,在队列中维护dp[i-w ...
 
随机推荐
- Ubuntu16.04小白入门分享之 玩转Ruby你需要安装什么软件(持续更新)
			
Ubuntu提示功能很强大,一般如果你想安装什么软件,可以直接输入名字,然后会有提示,安装格式一般为: sudo apt install 名字 Ubuntu14.04/16.04命令行快速安装Ruby ...
 - 前端必须掌握的 nginx 技能(4)
			
概述 作为一个前端,我觉得必须要学会使用 nginx 干下面几件事: 代理静态资源 设置反向代理(添加https) 设置缓存 设置 log 部署 smtp 服务 设置 redis 缓存(选) 下面我按 ...
 - ubuntu 常用命令及一些问题collection
			
转载请包含http://www.cnblogs.com/lqruui/p/5306941.html 一.安装卸载删除 1.手动 install.卸载.删除 1.首先tar -zxvf +压缩包名解压压 ...
 - docker下载镜像加速
			
1.如何获取阿里云加速地址 参考文档 https://yq.aliyun.com/articles/29941 关于加速器的地址,你只需要登录容器Hub服务的控制台,左侧的加速器帮助页面就会显示为你独 ...
 - JavaScript编程精解  初读笔记
			
1.1 值 JavaScript里有6种基本类型的值: number.string.Boolean.object.function和undefined. 1.3.2 prompt和confirm 浏览 ...
 - Prometheus存储模型分析
			
Prometheus是时下最为流行的开源监控解决方案,我们可以很轻松地以Prometheus为核心快速构建一套包含监控指标的抓取,存储,查询以及告警的完整监控系统.单个的Prometheus实例就能实 ...
 - linu基础命令1
			
/根目录,第一级目录 1.ls列出当前目录下的文件和目录-a: 列出所有的文件,包括所有以.开头的隐藏文件-d: 列出目录本身,并不包含目录中的文件(-ld)-h: 和-l一起使用,文件大小人类易读 ...
 - Redis 入门 3.2.2 命令
			
Redis 入门 3.2 字符串类型 3.2.2 命令 1. 获得符合规则的键名列表 SET key value GET key SET和GET是Redis中最简单的两个命令,他们实现的功能和编程 ...
 - Day01:API文档 / 字符串基本操作
			
JDK API 什么是JDK API? JDK中包含大量的API类库,所谓AP就是一些写好的,可提供直接调用的功能(在Java语言中,这些功能以类的形式封装). JDK API包含的类库功能强大,经常 ...
 - cocos2dx[3.2](11) 新事件分发机制
			
在2.x中处理事件需要用到委托代理(delegate),相信学过2.x的触摸事件的同学,都知道创建和移除的流程十分繁琐. 而在3.x中由于加入了C++11的特性,而对事件的分发机制通过事件分发器Eve ...