【最长上升子序列】[NOIP1999]拦截导弹
2012-11-06 18:35
330 查看
题目:[NOIP1999]拦截导弹 rqnoj217
题目描述
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入格式
输入数据为两行,第一行为导弹的数目N(n<=1000)
第二行导弹依次飞来的高度,所有高度值均为不大于30000的正整数。
输出格式
输出只有一行是这套系统最多能拦截的导弹数和要拦截所有导弹最少要配备这种导弹拦截系统的套数。两个数据之间用一个空格隔开.样例输入
8389 207 155 300 299 170 158 65
样例输出
6 2第一问很简单,直接求出最长不上升子序列
第二问我不多说,在RQ上市这样说的
Pascal Code
program rqnoj217; var n:longint; a,f:array[0..1000+10] of longint; procedure init; begin assign(input,'rqnoj217.in'); assign(output,'rqnoj217.out'); reset(input); rewrite(output); end; procedure outit; begin close(input); close(output); halt; end; procedure readdata; var i:longint; begin read(n); for i:=1 to n do read(a[i]); end; procedure main; var i,j,max,min:longint; begin max:=1; min:=1; for i:=1 to n do f[i]:=1; for i:=1 to n do begin for j:=1 to i-1 do begin if a[i]>a[j] then continue; if f[i]<f[j]+1 then f[i]:=f[j]+1; if f[i]>max then max:=f[i]; end; end; for i:=1 to n do f[i]:=1; for i:=1 to n do for j:=1 to i-1 do begin if a[i]<=a[j] then continue; if f[i]<f[j]+1 then f[i]:=f[j]+1; if f[i]>min then min:=f[i]; end; writeln(max,' ',min); end; begin init; readdata; main; outit; end.
相关文章推荐
- 【最长上升子序列】[NOIP1999]拦截导弹
- noip1999 拦截导弹 (单调队列求解:最长下降子序列+最长上升子序列)
- ACM 588. [NOIP1999] 拦截导弹(dp+最长不上升子序列)
- 拦截导弹(最长上升子序列,最长不上升子序列)
- [dp][uestc oj][最长上升子序列] LIS N - 导弹拦截
- 蓝桥杯算法训练拦截导弹【最长上升子序列 & 最长非下降子序列nlogn 和 n^2】
- CDOJ 251 导弹拦截 (LIS,一种找到字典序最小的最长上升子序列的方法)
- 拦截导弹(规律:下降子序列的个数等于最长上升子序列的长度)
- 拦截导弹,最长非上升子序列,DP+二分
- [NOIP1999]拦截导弹
- 动态规划 最长上升(下降)子序列 SDNUOJ 1040 导弹拦截和最少拦截系统
- 清橙 A1120 拦截导弹 -- 动态规划(最长上升子序列)
- 3:拦截导弹(最长上升子序列)
- 588. [NOIP1999] 拦截导弹
- 2016年团体程序设计天梯赛-决赛 L2-014. 列车调度 【导弹拦截系统-最长上升子序列nlogn求法】
- rqnoj-217-拦截导弹-最长不上升子序列以及不上升子序列的个数
- 【动态规划】【二分】【最长不下降子序列】洛谷 P1020 导弹拦截
- 导弹拦截(dp-最长不上升子序列)
- HDU 1257 最少拦截系统【最长上升子序列】
- |Tyvj|NOIP1999|动态规划|贪心|P1878 拦截导弹