蓝桥杯算法训练 拦截导弹(动态规划 C语言)
问题描述
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。
输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。
输入格式
一行,为导弹依次飞来的高度
输出格式
两行,分别是最多能拦截的导弹数与要拦截所有导弹最少要配备的系统数
样例输入
389 207 155 300 299 170 158 65
样例输出
6
2
该题目是常见动态规划模型LIS
对于第一个求这套系统最多能拦截多少的导弹就是求最长下降子序列,然后就是求最少要配备的系统数的问题实际上就是求最长不下降子序列的的长度(根据Dilworth定理:最少的下降子序列个数为最长不下降子序列的长度,上升子序列同理。 理解一下就是,一个序列给你,如果你现在要找至少多少个下降子序列,你就先找一个最长不下降子序列,因为最长不下降子序列中每个元素两两不能组成一个下降子序列,所以说最长不下降子序列中每个元素都是被原序列每个不同的下降子序列包含。即最长不下降子序列的长度就是原序列的最少下降子序列的个数。)
其中上升子序列是严格递增的相邻元素不能相等,不下降子序列相邻元素可相等。
代码实现如下:
#include<stdio.h>
#define N 30000
#define max(a,b) ((a)>(b)?(a):(b))
//DP 最长上升子序列与最长下降子序列
int main(){int a[N],up[N]={0},down[N]={0};int i=0,j,k,ans=0,cnt=0;while(1){scanf("%d",&a[i++]);char ch=getchar();if(ch=='\n')break;}for(k=0;k<i;k++){up[k]=1; //up[k]为以a[k]为结尾的最长不下降子序列的长度down[k]=1; //down[k]为以a[k]为结尾的最长下降子序列的长度for(j=0;j<k;j++){if(a[j]>a[k]){//最长下降子序列 down[k]=max(down[j]+1,down[k]);}else{//最长不下降子序列 up[k]=max(up[j]+1,up[k]);}}ans=max(ans,down[k]);cnt=max(cnt,up[k]);}printf("%d\n%d",ans,cnt);return 0;
}
蓝桥杯算法训练 拦截导弹(动态规划 C语言)相关推荐
- 蓝桥杯 - 算法训练 明明的随机数 C语言实现
算法训练 明明的随机数 题目: 问题描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个, ...
- 蓝桥杯 算法训练 乘积最大(动态规划)
问题描述 今年是国际数学联盟确定的"2000--世界数学年",又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一 ...
- 黑色星期五c语言程序,[蓝桥杯][算法训练VIP]黑色星期五 (C语言代码)
解题思路: 输入年份是已知的,既然1998年1月1日是星期四,随后的某年某月某日是星期几,可用函数来计算.首先需要知道,从1998年到某年,过了多少年,每过一年要加上366天(闰年)或365天:然后是 ...
- 蓝桥杯——算法训练——数字三角形
蓝桥杯--算法训练--数字三角形 这道题不难,但是比较典型,可以作为动态规划(dp)的入门篇,属于线性dp(LIS,LCS和数字三角形都是此类题型). ------------------------ ...
- 蓝桥杯 算法训练 逗志芃的危机
蓝桥杯 算法训练 逗志芃的危机 题目描述 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 逗志芃又一次面临了危机.逗志芃的妹子是个聪明绝顶的人,相比之下逗志芃就很菜了.现在她妹子要和 ...
- 蓝桥杯 算法训练 强力党逗志芃
蓝桥杯 算法训练 强力党逗志芃 题目描述 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学技能.现在我们可以了解到,每个 ...
- 蓝桥杯算法训练 印章
蓝桥杯 算法训练 印章 问题描述 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入格式 一行两个正整数n和m 输出格式 一个实数P表示答案,保 ...
- 蓝桥杯 算法训练 幸运的店家
蓝桥杯 算法训练 幸运的店家 题目描述 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 炫炫开了一家商店,卖的货只有一个,XXX,XXX卖N元钱.有趣的是,世界上只有面值为3的幂的纸 ...
- 蓝桥杯 算法训练 Beaver's Calculator
蓝桥杯 算法训练 Beaver's Calculator 问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器,他将此命名为"Beaver's Calculator ...
最新文章
- 两位一体数码管引脚图_两位一体共阴数码管,第二位数字显示不出来,按钮第7按钮按下去来回显示,但第一位又不显示了,,,急...
- 递归遍历所有文件夹名称
- FFMPEG H264/H265 编码延迟问题
- 世界编程大赛一等奖作品(转载)
- Mysql索引会失效的几种情况分析
- python queue get 方法_Python Queue模块详解
- TensorSpace:超酷炫3D神经网络可视化框架
- poj 1160 dp
- Centos 7忘记密码,如何重置
- 邮箱是互联网的个人中心
- 【宏】解决vcard乱码批量导入outlook
- springbootspringboot杏林中医诊所管理系统133742
- pyserial查看串口
- uni-app跳转浏览器
- 阿里云国际版服务器如何搭建区块链应用程序
- TensorRT加速应用
- 怎么把电脑彻底清理干净?电脑怎么清理彻底
- crm订单管理系统免费版哪个比较靠谱
- 将身份证正反面放在一个文档
- 棒棒糖-小学数学出题机v1.4.2【更新2019/12/26】