TYVJ P1020 导弹拦截 Label:水
题目描述
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。
输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。
输入输出格式
输入格式:
一行,若干个正整数。
输出格式:
2行,每行一个整数,第一个数字表示这套系统最多能拦截多少导弹,第二个数字表示如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。
输入输出样例
389 207 155 300 299 170 158 65
6
2
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define inf 0x3f3f3f3f
using namespace std;
int a[],b[],k=,N,que[];
void ques1(){
for(int i=;i<=N;i++) b[i]=a[N-i+];
for(int i=;i<=N;i++)
*lower_bound(que+,que+N+,b[i])=b[i];
cout<<lower_bound(que+,que+N+,inf)-(que+)<<endl;
} void ques2(){
int cnt=N,ans=;;
for(int i=;i<=N;i++){
if(a[i]!=-){
if(cnt<=) break;
ans++;cnt--;
int x=a[i];
for(int j=i+;j<=N;j++){
if(a[j]<=x&&a[j]!=-){
x=a[j];
a[j]=-;
cnt--;
}
}
// cout<<cnt<<endl;
}
}
cout<<ans<<endl;
} int main(){
// freopen("01.txt","r",stdin);
fill(que,que+,inf);
while(scanf("%d",&a[++k])==);
N=k-; ques1();
ques2(); return ;
}我害羞,看楼下的吧
拆分为两个小问题,
第一个直接二分,倒过来就是最大不下降子序列
第二个模拟每个系统,被引爆的导弹标记一下不要再访问就好
上学长代码
题目有点儿区别,详见这里http://hzwer.com/631.html
假装没有暴露学长blog
代码如下,Orz
#include<iostream>
using namespace std;
int n;
int h[],ht[],best[];
int ans=;
int main()
{
cin>>n;
for(int i=;i<=n;i++)
cin>>h[i];
best[]=0x7fffffff;
for(int i=;i<=n;i++)
for(int j=ans;j>=;j--)
if(best[j]>=h[i]){best[j+]=h[i];ans=max(ans,j+);break;}
cout<<ans;
ans=;
for(int i=;i<=n;i++)
{
for(int j=;j<=ans;j++)
{
if(ht[j]>=h[i]){ht[j]=h[i];break;}
}
if(ht[ans]<h[i])ht[++ans]=h[i];
}
cout<<' '<<ans;
return ;
}
TYVJ P1020 导弹拦截 Label:水的更多相关文章
- codevs1044 拦截导弹==洛谷 P1020 导弹拦截
P1020 导弹拦截 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天 ...
- p1020导弹拦截
传送门 P1020导弹拦截 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度 ...
- luogu P1020 导弹拦截 x
首先上题目~ luogu P1020 导弹拦截 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都 ...
- 【题解】P1020 导弹拦截
[题解]P1020 导弹拦截 从n^2到nlogn 第二问就是贪心,不多说 第一问: 简化题意:求最长不下降子序列 普通n^2: for (int i = 1; i <= n; i++) for ...
- 洛谷 P1020导弹拦截题解
洛谷链接:https://www.luogu.org/problem/P1020 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到 ...
- P1020 导弹拦截 (贪心+最长不降子序列)
题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...
- 洛谷 P1020 导弹拦截(dp+最长上升子序列变形)
传送门:Problem 1020 https://www.cnblogs.com/violet-acmer/p/9852294.html 讲解此题前,先谈谈何为最长上升子序列,以及求法: 一.相关概念 ...
- P1020 导弹拦截 dp 树状数组维护最长升序列
题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...
- codevs——T1044 拦截导弹 || 洛谷——P1020 导弹拦截
http://codevs.cn/problem/1044/ || https://www.luogu.org/problem/show?pid=1020#sub 时间限制: 1 s 空间限制: 1 ...
随机推荐
- [另开新坑] 算导v3 #26 最大流 翻译
26 最大流 就像我们可以对一个路网构建一个有向图求最短路一样,我们也可以将一个有向图看成是一个"流量网络(flow network)",用它来回答关于流的问题. Just as ...
- android dialog 模拟新浪、腾讯title弹框效果
http://blog.csdn.net/jj120522/article/details/7764183 首先我们看一下新浪微博的效果(其它就是一个dialog): 点 ...
- 【GoLang】GoLang fmt 占位符详解
golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf. # 定义示例类型和变量 type Human struct { Name string } var peo ...
- 动态设置Div坐标
<style type="text/css"> #main{text-align:center; background-color:#9FF; height:600px ...
- css选择器集体声明
<title>静夜思</title><style type="text/css">h1,#two,.red{ color:#ff0000; fo ...
- html span标签 不换行(有时span带中文时候是可以自动换行的)
<span>你好111111111111111111111111111111111111111111111111111aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ...
- 61. 从1到n,共有n个数字,每个数字只出现一次。从中随机拿走一个数字x,请给出最快的方法,找到这个数字。如果随机拿走k(k>=2)个数字呢?[find k missing numbers from 1 to n]
[本文链接] http://www.cnblogs.com/hellogiser/p/find-k-missing-numbers-from-1-to-n.html [题目] 从1到n,共有n个数字 ...
- Java for LeetCode 055 Jump Game
Given an array of non-negative integers, you are initially positioned at the first index of the arra ...
- 禁用SettingSyncHost.exe
TASKKILL /F /IM SettingSyncHost.exe /T
- mac OS X 安装svn
因为从10.5版本开始适用Mac OS,SVN一直都是默认安装的软件. 后来发现一个简单的办法. 如果你有安装XCode,只需要在code > Preferences > download ...