【DP】拦截导弹(C++)

您所在的位置:网站首页 r30导弹拦截失败是哪部电影 【DP】拦截导弹(C++)

【DP】拦截导弹(C++)

2024-01-18 17:13| 来源: 网络整理| 查看: 265

题目描述

某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。 输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。

输入格式

一行,空格隔开的若干个正整数。

输出格式

两行,每行一个整数。 第一个整数表示最多能拦截的导弹数; 第二个整数表示要拦截所有导弹最少要配备的系统数。

数据范围与提示

2=a_i aj​>=ai​时,状态转移方程为 f i = m a x ( f i , f j + 1 ) f_i=max(f_i,f_j+1) fi​=max(fi​,fj​+1) 第二部分:死循环暴力枚举,从第一个开始扫,扫到这一套系统无法拦截为止,接着再增加一套,如果全部没了,则代表扫完了,那么当前的系统数就是最优的。 参考代码(本代码在NFLSOJ提交通过):

#include using namespace std; int a[10001],n=1,f[10001]; bool ok[10001]; int main() { while(scanf("%d",&a[n])!=EOF) n++; n--; for(int i=1; i if(a[i] //cout if(!ok[i]&&a[i] printf("%d\n",sum); return 0; } } return 0; }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3