题面:[POI2014]PTA-Little Bird

题解:

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的更多相关文章

  1. 单调队列优化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 ...

  2. P4381 [IOI2008]Island(基环树+单调队列优化dp)

    P4381 [IOI2008]Island 题意:求图中所有基环树的直径和 我们对每棵基环树分别计算答案. 首先我们先bfs找环(dfs易爆栈) 蓝后我们处理直径 直径不在环上,就在环上某点的子树上 ...

  3. 【bzoj3831】[Poi2014]Little Bird 单调队列优化dp

    原文地址:http://www.cnblogs.com/GXZlegend/p/6826475.html 题目描述 In the Byteotian Line Forest there are   t ...

  4. BZOJ_3831_[Poi2014]Little Bird_单调队列优化DP

    BZOJ_3831_[Poi2014]Little Bird_单调队列优化DP Description 有一排n棵树,第i棵树的高度是Di. MHY要从第一棵树到第n棵树去找他的妹子玩. 如果MHY在 ...

  5. BZOJ 1499 [NOI2005] 瑰丽华尔兹 | 单调队列优化DP

    BZOJ 1499 瑰丽华尔兹 | 单调队列优化DP 题意 有一块\(n \times m\)的矩形地面,上面有一些障碍(用'#'表示),其余的是空地(用'.'表示).每时每刻,地面都会向某个方向倾斜 ...

  6. bzoj 1499 [NOI2005]瑰丽华尔兹——单调队列优化dp

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1499 简单的单调队列优化dp.(然而当时却WA得不行.今天总算填了坑) 注意滚动数组赋初值应 ...

  7. 【笔记篇】单调队列优化dp学习笔记&&luogu2569_bzoj1855股票交♂易

    DP颂 DP之神 圣洁美丽 算法光芒照大地 我们怀着 崇高敬意 跪倒在DP神殿里 你的复杂 能让蒟蒻 试图入门却放弃 在你光辉 照耀下面 AC真心不容易 dp大概是最经久不衰 亘古不化的算法了吧. 而 ...

  8. 单调队列优化DP,多重背包

    单调队列优化DP:http://www.cnblogs.com/ka200812/archive/2012/07/11/2585950.html 单调队列优化多重背包:http://blog.csdn ...

  9. 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 ...

随机推荐

  1. leetcode 105从前序与中序遍历序列构造二叉树

    方法一:直接使用复制的数据递归:O(n)时间,O(n)空间,不计算递归栈空间: /** * Definition for a binary tree node. * struct TreeNode { ...

  2. IDEA超实用快捷键

    1.查看某个方法在哪里被调用了 Ctrl+G 2.从Controller跳过接口快速进入到实现类的方法: Ctrl+T 3.快速打开:Generate Alt+Insert 4.生成包裹代码: Ctr ...

  3. ERROR: Command "python setup.py egg_info" python-nss

    [root@localhost ~]# pip install python-nss DEPRECATION: Python 2.7 will reach the end of its life on ...

  4. pandas中根据列的值选取多行数据

    # 选取等于某些值的行记录 用 == df.loc[df['column_name'] == some_value] # 选取某列是否是某一类型的数值 用 isin df.loc[df['column ...

  5. Report List 报表开发

    1. Report List的输出定义 * ...NO STANDARD PAGE HEADING: 输出的报表不包含表头: * ...LINE-SIZE col : 输出的报表不包含表头: * .. ...

  6. 1 Configuring SAP ERP Sales and Distribution -introduction to SAP

    SAP is one of the most popular enterprise resource planning (ERP) solutions inthe world. It offers a ...

  7. H3C版本升级

    H3C S5500和S3100都可以通过TFTP方式进行升级,1.设置交换机的vlan1的ip地址,如10.10.10.2/242.设置电脑和交换机连接的ip地址,如10.10.10.1/243.在交 ...

  8. 《React+Redux前端开发实战》笔记3:基于Webpack构建的Hello World案例(下)

    2.使用React编码 下面正式开始使用React来编写前端代码. (1)npm安装react和react-dom: npm install react react-dom -S (2)用下面代码替换 ...

  9. 模板中用url_for的好处

    from flask import Flask,render_template app = Flask(__name__) @app.route('/') def index(): return re ...

  10. awk 命令使用指南

    一:awk 的执行流程 (1) 首先执行BEGIN{} 块中的初始化操作 (2) 然后从指定的数据文件中循环读取一个数据行 ( 自动更新 NF.NR.$0.$1....., 等内建变量的值) (3) ...