SUST OJ 1674: 入侵与反击(最长不下降子序列)
1674: 入侵与反击
时间限制: 1 Sec 内存限制: 128 MB
提交: 229 解决: 28
[提交][状态][讨论版]
题目描述
A国部署的反导系统遇到了一个致命BUG,那就是每一次发射的拦截导弹的飞行高度都将只能小于等于上一枚导弹的飞行高度,第一次发射的拦截导弹的飞行高度可以看作是足够大。对于A国,这是一件很严重的问题,这意味着A国的防空系统面临空前危机。
通过对A国的军事部门计算机的入侵,A国还不知道敌对国B国刚才已经发现了这项BUG。更不知道,在这项BUG的报告书上交到B国空军司令部那一刻,三分钟后B国的全体高级空军军官已经在作战室讨论作战方案。
如果战争真的开始,B国将依次派出n架战斗机,A国将依次发射拦截导弹,这n架飞机的飞行高度分别是h1,h2,h3.....hn。B国将要充分利用这项漏洞,考虑到这么一种情况,假设只要A国的导弹的飞行高度大于等于B国飞机就能百分之百地锁定并击落,那么B国,最少将会有几架不被击落飞机?
输入
第一行为T,表示有T组输入数据(T<200)。
每组数据第一行是n,代表有n架飞机(1=<n<=20 000)。
接下来一行有n个数,分别代表n架飞机的飞行高度,飞机飞行高度maxh为(1<=maxh<=50 000)。
输出
对于每组测试数据,在每行中输出一个数。表示B国最少将会有几架未被击落飞机。
样例输入
2
1
1000
6
340 260 101 405 278 89
样例输出
0
2
思路:找到一组数中有多少个数大于在该数之前的的某个数。
可以把数组倒过来,从最后一个数往前,寻找最长不下降子序列,然后数组的长度减去该子序列的长度即为所求
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+10;
int a[maxn],dp[maxn];
int b[maxn];
int main()
{
int t,n,i;
cin>>t;
while(t--)
{
cin>>n;
for(i=0;i<n;i++) cin>>a[i];
memset(b,0,sizeof(0));
for(i=0;i<n;i++)
{
b[n-1-i]=a[i];
}
memset(dp,0,sizeof(0));
dp[0]=b[0];
int pos,sum=1;
for(i=1;i<n;i++)
{
pos=lower_bound(dp,dp+sum,b[i]+1)-dp;
dp[pos]=b[i];
sum=max(sum,pos+1);
}
cout<<n-sum<<endl;
}
return 0;
}
SUST OJ 1674: 入侵与反击(最长不下降子序列)的更多相关文章
- [Swust OJ 585]--倒金字塔(LIS最长不下降子序列)
题目链接:http://acm.swust.edu.cn/problem/585/ Time limit(ms): 3000 Memory limit(kb): 65535 SWUST国的一支科学 ...
- 最长不下降子序列(LIS)
最长上升子序列.最长不下降子序列,解法差不多,就一点等于不等于的差别,我这里说最长不下降子序列的. 有两种解法. 一种是DP,很容易想到,就这样: REP(i,n) { f[i]=; FOR(j,,i ...
- 最长不下降子序列 O(nlogn) || 记忆化搜索
#include<stdio.h> ] , temp[] ; int n , top ; int binary_search (int x) { ; int last = top ; in ...
- tyvj 1049 最长不下降子序列 n^2/nlogn
P1049 最长不下降子序列 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 求最长不下降子序列的长度 输入格式 第一行为n,表示n个数第二行n个数 输出格式 ...
- 最长不下降子序列的O(n^2)算法和O(nlogn)算法
一.简单的O(n^2)的算法 很容易想到用动态规划做.设lis[]用于保存第1~i元素元素中最长不下降序列的长度,则lis[i]=max(lis[j])+1,且num[i]>num[j],i&g ...
- 最长不下降子序列//序列dp
最长不下降子序列 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 求最长不下降子序列的长度 输入格式 第一行为n,表示n个数第二行n个数 输出格式 最长不下降 ...
- 【tyvj】P1049 最长不下降子序列
时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 求最长不下降子序列的长度 输入格式 第一行为n,表示n个数 第二行n个数 输出格式 最长不下降子序列的长度 测 ...
- hdu 4604 Deque(最长不下降子序列)
从后向前对已搜点做两遍LIS(最长不下降子序列),分别求出已搜点的最长递增.递减子序列长度.这样一直搜到第一个点,就得到了整个序列的最长递增.递减子序列的长度,即最长递减子序列在前,最长递增子序列在后 ...
- 最长不下降子序列nlogn算法详解
今天花了很长时间终于弄懂了这个算法……毕竟找一个好的讲解真的太难了,所以励志我要自己写一个好的讲解QAQ 这篇文章是在懂了这个问题n^2解决方案的基础上学习. 解决的问题:给定一个序列,求最长不下降子 ...
随机推荐
- Codeforces 454D - Little Pony and Harmony Chest
454D - Little Pony and Harmony Chest 思路: 状压dp,由于1的时候肯定满足题意,而ai最大是30,所以只要大于等于59都可以用1替换,所以答案在1到59之间 然后 ...
- XML和Schema
2017-11-03 19:33:56 XML:Extensible Markup Language,也就是可扩展标记语言.XML工具使处理和转化信息变得十分容易和方便. XML和HTML格式是古老的 ...
- SQL脚本去重分组统计
需求:首先有一张表记录学生姓名.科目和成绩,然后模拟插入几条数据,脚本如下: create table score ( Name ),--姓名 subject ),--科目 grade int--成绩 ...
- Rspec: everyday-rspec实操。5:controller test(了解基础)
第 5 章 控制器测试 5.1基础 rails generate rspec:controller home RSpec.describe HomeController, type: :control ...
- ACM-ICPC Beijing Online A The Book List
比赛的时候一眼就看出是字典树+DFS了,然而这题题意比较难理解,还有不少WA点.所以很快敲完之后和队友反复斟酌题意,修改代码.结果还是交了3发WA.最后猜测目录和书在同一个母目录域下同名是不同的,增加 ...
- splice的多种用法
(一)splice的多种用法: splice(n,m) 从索引n开始删除m个.返回删除项组成新数组 splice(n) 从索引n开始删除到末尾 splice(n,m,x) 从索引n开始删除m个,并且把 ...
- Clear The Matrix CodeForces - 903F (状压)
大意: 给定4行的棋盘以及4种大小的正方形方块, 每种各有一定花费, 每次可以选一种方块放在棋盘上, 棋盘对应格子全变为'.', 求最少花费使得棋盘全部变成'.' 状压基本操作练习, 状态取12位, ...
- Connecting Vertices CodeForces - 888F (图论,计数)
链接 大意: 给定邻接表表示两点是否可以连接, 要求将图连成树, 且边不相交的方案数 n范围比较小, 可以直接区间dp $f[l][r]$表示答案, $g[l][r]$表示区间[l,r]全部连通且l, ...
- 『Numpy』高级函数_np.nditer()&ufunc运算
1.np.nditer():numpy迭代器 默认情况下,nditer将视待迭代遍历的数组为只读对象(read-only),为了在遍历数组的同时,实现对数组元素值得修改,必须指定op_flags=[' ...
- 在oaf中集成SpringLoaded实现热部署
首先声明:其实JRebel和Spring-Loaded就是一个开发环境下的利器,skip build and redeploy process,大大提升了工作效率!而非生产环境的利器... 不要在生产 ...