洛谷P3572 [POI2014]PTA-Little Bird
P3572 [POI2014]PTA-Little Bird
题目描述
In the Byteotian Line Forest there are nn trees in a row.
On top of the first one, there is a little bird who would like to fly over to the top of the last tree.
Being in fact very little, the bird might lack the strength to fly there without any stop.
If the bird is sitting on top of the tree no. i, then in a single flight leg it can fly toany of the trees no. i+1,i+2,\cdots,i+ki+1,i+2,⋯,i+k, and then has to rest afterward.
Moreover, flying up is far harder to flying down. A flight leg is tiresome if it ends in a tree at leastas high as the one where is started. Otherwise the flight leg is not tiresome.
The goal is to select the trees on which the little bird will land so that the overall flight is leasttiresome, i.e., it has the minimum number of tiresome legs.
We note that birds are social creatures, and our bird has a few bird-friends who would also like to getfrom the first tree to the last one. The stamina of all the birds varies,so the bird's friends may have different values of the parameter kk.
Help all the birds, little and big!
从1开始,跳到比当前矮的不消耗体力,否则消耗一点体力,每次询问有一个步伐限制,求每次最少耗费多少体力
输入输出格式
输入格式:
There is a single integer nn (2\le n\le 1\ 000\ 0002≤n≤1 000 000) in the first line of the standard input:
the number of trees in the Byteotian Line Forest.
The second line of input holds nn integers d_1,d_2,\cdots,d_nd1,d2,⋯,dn (1\le d_i\le 10^91≤di≤109)separated by single spaces: d_idi is the height of the i-th tree.
The third line of the input holds a single integer qq (1\le q\le 251≤q≤25): the number of birds whoseflights need to be planned.
The following qq lines describe these birds: in the ii-th of these lines, there is an integer k_iki (1\le k_i\le n-11≤ki≤n−1) specifying the ii-th bird's stamina. In other words, the maximum number of trees that the ii-th bird can pass before it has to rest is k_i-1ki−1.
输出格式:
Your program should print exactly qq lines to the standard output.
In the ii-th line, it should specify the minimum number of tiresome flight legs of the ii-th bird.
输入输出样例
9
4 6 3 6 3 7 2 6 5
2
2
5
2
1
说明
从1开始,跳到比当前矮的不消耗体力,否则消耗一点体力,每次询问有一个步伐限制,求每次最少耗费多少体力
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 1000010
using namespace std;
int n,a[maxn],dp[maxn],q;
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++)scanf("%d",&a[i]);
scanf("%d",&q);
int limit;
for(int i=;i<=q;i++){
scanf("%d",&limit);
memset(dp,/,sizeof(dp));
dp[]=;
for(int i=;i<=n;i++){
for(int j=i-;i-j<=limit&&j>=;j--){
if(a[j]>a[i])dp[i]=min(dp[i],dp[j]);
else dp[i]=min(dp[i],dp[j]+);
}
}
printf("%d\n",dp[n]);
}
}
40分 暴力dp
/*
非常标准的单调队列优化dp
维护两个单调性,首先是dp[]单调递减,其次是a[]单调递增
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 1000010
using namespace std;
int n,op,a[maxn],dp[maxn],q[maxn],h,t;
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++)scanf("%d",&a[i]);
scanf("%d",&op);
int limit;
for(int i=;i<=op;i++){
scanf("%d",&limit);
h=,t=;
dp[]=;q[]=;
for(int i=;i<=n;i++){
while(t-h>=&&i-q[h]>limit)h++;
dp[i]=dp[q[h]]+(a[q[h]]<=a[i]);
while(t-h>=&&((dp[q[t]]>dp[i])||(dp[q[t]]==dp[i]&&a[q[t]]<a[i])))t--;
q[++t]=i;
}
printf("%d\n",dp[n]);
}
}
100分 单调队列优化dp
洛谷P3572 [POI2014]PTA-Little Bird的更多相关文章
- 洛谷 P3580 - [POI2014]ZAL-Freight(单调队列优化 dp)
洛谷题面传送门 考虑一个平凡的 DP:我们设 \(dp_i\) 表示前 \(i\) 辆车一来一回所需的最小时间. 注意到我们每次肯定会让某一段连续的火车一趟过去又一趟回来,故转移可以枚举上一段结束位置 ...
- 洛谷 P3573 [POI2014]RAJ-Rally 解题报告
P3573 [POI2014]RAJ-Rally 题意: 给定一个\(N\)个点\(M\)条边的有向无环图,每条边长度都是\(1\). 请找到一个点,使得删掉这个点后剩余的图中的最长路径最短. 输入输 ...
- 洛谷——P3576 [POI2014]MRO-Ant colony
P3576 [POI2014]MRO-Ant colony 题目描述 The ants are scavenging an abandoned ant hill in search of food. ...
- 洛谷 P3576 [POI2014]MRO-Ant colony
P3576 [POI2014]MRO-Ant colony 题目描述 The ants are scavenging an abandoned ant hill in search of food. ...
- 洛谷P3576 [POI2014]MRO-Ant colony [二分答案,树形DP]
题目传送门 MRO-Ant colony 题目描述 The ants are scavenging an abandoned ant hill in search of food. The ant h ...
- 2018.09.14 洛谷P3567 [POI2014]KUR-Couriers(主席树)
传送门 简单主席树啊. 但听说有随机算法可以秒掉%%%(本蒟蒻并不会) 直接维护值域内所有数的出现次数之和. 当这个值不大于区间总长度的一半时显然不存在合法的数. 这样在主席树上二分查值就行了. 代码 ...
- 洛谷P3567[POI2014]KUR-Couriers(主席树+二分)
题意:给一个数列,每次询问一个区间内有没有一个数出现次数超过一半 题解: 最近比赛太多,都没时间切水题了,刚好日推了道主席树裸题,就写了一下 然后 WA80 WA80 WA0 WA90 WA80 ?? ...
- 【刷题】洛谷 P3573 [POI2014]RAJ-Rally
题目描述 An annual bicycle rally will soon begin in Byteburg. The bikers of Byteburg are natural long di ...
- [洛谷P3567][POI2014]KUR-Couriers
题目大意:给一个数列,每次询问一个区间内有没有一个数出现次数超过一半.有,输出这个数,否则输出$0$ 题解:主席树,查询区间第$\bigg\lfloor\dfrac{len+1}{2}\bigg\rf ...
随机推荐
- angularJs 购物车模型
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <link rel= ...
- Html+CSS3技术实现动画、天气图标动态效果 效果很酷
1. [代码][CSS]代码 <svg version="1.1" id="sun" class="climacon c ...
- IDEAL葵花宝典:java代码开发规范插件 (maven helper)解决maven 包冲突的问题
小编说到: 在我们日常开发当中常常我们会遇到JAR包冲突.找来找去还找不到很是烦人.那么所谓的JAR包冲突是指的什么那?JAR包冲突就是-引入的同一个JAR包却有好几个版本. 例如: 项目中引用了两个 ...
- cifs挂载远程文件出现 No such device or address错误
1. 参考 https://www.raspberrypi.org/forums/viewtopic.php?t=82199 找了两天看到这个文章才解决了问题. 我是之前同事在windows上挂载成功 ...
- listen and translation exercise 51
You are supposed to be having fun now. I have to hand in my biology paper tomorrow. Listen, you litt ...
- OpenCV——PS 滤镜算法之极坐标变换到平面坐标
// define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include < ...
- NO0:重新拾起C语言
因工作所需,重新捡起C语言,之前在学校里有接触过,但现在已经忘的一干二净了,现决定重新开始学习,为工作,为生活. 以<标准 C程序设计 第5版>的课程进行基础学习,同时以另外两本书为辅助, ...
- AtCoder Beginner Contest 100 2018/06/16
A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...
- [Codeforces 452E] Three Strings
[题目链接] https://codeforces.com/contest/452/problem/E [算法] 构建后缀数组 用并查集合并答案即可 时间复杂度 : O(NlogN) [代码] #in ...
- 高级Java工程师必备 ----- 深入分析 Java IO (一)BIO
BIO编程 最原始BIO 网络编程的基本模型是C/S模型,即两个进程间的通信. 服务端提供IP和监听端口,客户端通过连接操作想服务端监听的地址发起连接请求,通过三次握手连接,如果连接成功建立,双方就可 ...