导弹防御系统(LIS+dfs)
为了对抗附近恶意国家的威胁,R国更新了他们的导弹防御系统。
一套防御系统的导弹拦截高度要么一直 严格单调 上升要么一直 严格单调 下降。
例如,一套系统先后拦截了高度为 3 和高度为 4 的两发导弹,那么接下来该系统就只能拦截高度大于 4 的导弹。
给定即将袭来的一系列导弹的高度,请你求出至少需要多少套防御系统,就可以将它们全部击落。
Input
多组测试用例。
对于每个测试用例,第一行包含整数 n ( 1 ≤ n ≤ 50 ),表示来袭导弹数量。
第二行包含 n 个不同的整数,表示每个导弹的高度。
当输入测试用例 n = 0 时,表示输入终止,且该用例无需处理。
Output
每个测试用例输出一行:一个整数,表示所需的防御系统数量。
Sample Input
5
3 5 2 4 1
0
Sample Output
2
思路:题意大致为给定一个序列,求最少可以用多少个上升子序列和下降子序列将其表示出来。
采用dfs和LIS的贪心求法,用bfs会爆内存?因为答案最大也不可能会大于n,所以ans初始化为n。后续更新时更新ans的最小值。对每一个d[i]都有两个方向的操作。最大为2的50次方。
同时还要回溯恢复现场。
#include<bits/stdc++.h>
using namespace std;
int ans,sum;
const int N=110;
int d[N];
int up[N];
int down[N];
int n;
void dfs(int u,int su,int sd)
{if(su+sd>=ans) return ;if(u==n){ans=su+sd;return;}//1接到某一个上升序列的末尾int k=0;while(k<su&&up[k]>=d[u]) k++;int t=up[k];up[k]=d[u];if(k<su) dfs(u+1,su,sd);else dfs(u+1,su+1,sd);up[k]=t;//2放到下降序列末尾k=0;while(k<sd&&down[k]<=d[u]) k++;t=down[k];down[k]=d[u];if(k<sd) dfs(u+1,su,sd);else dfs(u+1,su,sd+1);down[k]=t;
}
int main()
{while(cin>>n,n){for(int i=0;i<n;i++)cin>>d[i];ans=n;dfs(0,0,0);cout<<ans<<endl;}return 0;
}
导弹防御系统(LIS+dfs)相关推荐
- 导弹防御系统[导弹拦截系统]
导弹防御系统[dfs] 题目链接 引言(请忽略):今天是小白ACM集训的日子,然后数据结构实在是太难了,真是学不动了,然后就只能无助地去复习以前的题了,记得以前在SDUT程设二里面有一道题叫最少拦截系 ...
- 拦截导弹 导弹防御系统
拦截导弹 & 导弹防御系统 拦截导弹 导弹防御系统 拦截导弹 题目链接:acwing1010. 拦截导弹 题目描述: 输入输出: 分析: 第一个问题为输出最长递减子序列,由于导弹数在1000以 ...
- C++---最长上升子序列模型---导弹防御系统(每日一道算法2023.3.5)
注意事项: 本题的dp:"线性dp-最长上升子序列的长度" 本题的贪心(单调队列):"最长上升子序列模型-拦截导弹" 下面思路只讲如何运用这些东西来解这道题 强 ...
- 导弹防御系统,如何跟蜻蜓的大脑学习计算?
来源:大数据文摘 作者:Frances Chance 多雨的夏季,蜻蜓最为常见,这些美丽的生物的飞行速度极快,狩猎能力也极为出色:蜻蜓狩猎的成功率捕获了高达95% ,它们一天可以吃掉数百只蚊子. 这种 ...
- 问题 : 导弹防御系统
题目描述 某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...
- CG14导弹防御系统
[问题描述] 某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的 ...
- AcWing LIS相关问题 187 导弹防御系统
''' DFS枚举所有可能的元素放到上升序列或者下降序列的情况 '''ans = [0x7fffffff] # 最小序列总数 up = [0] * 60 # 上升序列的尾数数值 down = [0] ...
- 【NOIP2013模拟】导弹防御塔
题目 Freda的城堡-- "Freda,城堡外发现了一些入侵者!" "喵-刚刚探究完了城堡建设的方案数,我要歇一会儿嘛lala~" "可是入侵者已经 ...
- P1020 导弹拦截(LIS)
题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...
- [tyvj1935 Poetize3]导弹防御塔 (二分图多重匹配)
传送门 Description Freda控制着N座可以发射导弹的防御塔.每座塔都有足够数量的导弹,但是每座塔每次只能发射一枚.在发射导弹时,导弹需要T1秒才能从防御塔中射出,而在发射导弹后,发射这枚 ...
最新文章
- java compareto方法怎么排序的_深入理解Java中Comparable和Comparator排序
- 计算机硬件系统的构成教学设计,2.1 计算机硬件系统教学设计思路
- OneNand、Nand和Nor三种Flash的区别
- C语言窗口布局,Android开发入门之学习笔记(四):程序窗口的布局(二)
- python爬虫遇到js加密_当爬虫遇到js加密
- 财务报表越做越丑?这些秒杀Excel的可视化工具,人人都能用
- 《『若水新闻』客户端开发教程》——14.代码编写(6)
- [学习整理]eclipe/MyEclipse:重要的快捷键
- 入手mac后,这5个技巧和窍门你应该知道
- 条形码技术应用属于计算机系统的,条形码技术在现代物流系统中的应用
- x64位游戏call代码测试注入器
- 开发一个小程序商城需要多少钱?
- 沟通:如何用沟通解决80%的工作问题?
- 计算机无法继续安装程序,电脑提示nvidia安装程序无法继续 如何解决 - 驱动管家...
- Unity3D启动报错的解决方案
- 生活美学 | 8种咖啡冲煮器具分别有什么特点
- java界面绘制地铁路线_基于 HTML5 Canvas实现 的交互式地铁线路图
- 【CSDN 2020年度征文】江湖路远,不说再见,不负韶光
- java后台 apiV3 对接微信app支付
- Robosense速腾激光雷达使用坐标变换功能
热门文章
- redis搭建哨兵模式(哨兵模式原理)
- 程序员如何不加班?—— 时间管理篇
- 机器学习:数学加强(二)——条件概率、贝叶斯公式、常见分布、协方差、相关系数、切比雪夫不等式、大数定律
- 对短信验证码发送次数的限制
- 短信验证码,在键盘显示验证码
- linux学习(跟着b站尚硅谷老师学习)
- 支付宝提现至个人账户接口开发
- uboot移植之迷雾解码
- AURIX TC397 ASCLIN UART
- centos7:configure: error: perl >= 5.7.3 with Encode and Data::Dumper required by Texinfo.