这道题目采用了dfs也就是说我们每一次需要考虑将他归入上升还是下降中, 其实区别并不大, 重要是思想, 可以参考我上一篇。

为了对抗附近恶意国家的威胁,RR 国更新了他们的导弹防御系统。

一套防御系统的导弹拦截高度要么一直 严格单调 上升要么一直 严格单调 下降。

例如,一套系统先后拦截了高度为 33 和高度为 44 的两发导弹,那么接下来该系统就只能拦截高度大于 44 的导弹。

给定即将袭来的一系列导弹的高度,请你求出至少需要多少套防御系统,就可以将它们全部击落。

输入格式

输入包含多组测试用例。

对于每个测试用例,第一行包含整数 nn,表示来袭导弹数量。

第二行包含 nn 个不同的整数,表示每个导弹的高度。

当输入测试用例 n=0n=0 时,表示输入终止,且该用例无需处理。

输出格式

对于每个测试用例,输出一个占据一行的整数,表示所需的防御系统数量。

数据范围

1≤n≤501≤n≤50

输入样例:

5
3 5 2 4 1
0

输出样例:

2

样例解释

对于给出样例,最少需要两套防御系统。

一套击落高度为 3,43,4 的导弹,另一套击落高度为 5,2,15,2,1 的导弹。

#include <iostream>
#include <algorithm>using namespace std;const int N = 55;int a[N];
int up[N], down[N];
int n;
int ans;
int u;void dfs(int u, int nu, int nd) {//if (nu + nd >= ans) return ;if (u == n) {ans = min(ans, nu + nd);return ;}int k = 0;while (k < nu && up[k] >= a[u]) k++; //upint t = up[k];up[k] = a[u];if (k >= nu) {dfs(u + 1, nu + 1, nd);} else {dfs(u + 1, nu, nd);}up[k] = t;k = 0;//downwhile (k < nd && down[k] <= a[u]) k++;t = down[k];down[k] = a[u];if (k >= nd) {dfs(u + 1, nu, nd + 1);} else {dfs(u + 1, nu, nd);}down[k] = t;}int main() {while (cin >> n, n) {for (int i = 0; i < n; i++) {cin >> a[i];}ans = N;dfs(0, 0, 0);cout << ans << endl;}return 0;
}

不会的记得去我的博客页面看, 有上升的写法肘, 跟我进屋

Acwing 187. 导弹防御系统相关推荐

  1. AcWing LIS相关问题 187 导弹防御系统

    ''' DFS枚举所有可能的元素放到上升序列或者下降序列的情况 '''ans = [0x7fffffff] # 最小序列总数 up = [0] * 60 # 上升序列的尾数数值 down = [0] ...

  2. 导弹防御系统[导弹拦截系统]

    导弹防御系统[dfs] 题目链接 引言(请忽略):今天是小白ACM集训的日子,然后数据结构实在是太难了,真是学不动了,然后就只能无助地去复习以前的题了,记得以前在SDUT程设二里面有一道题叫最少拦截系 ...

  3. C++---最长上升子序列模型---导弹防御系统(每日一道算法2023.3.5)

    注意事项: 本题的dp:"线性dp-最长上升子序列的长度" 本题的贪心(单调队列):"最长上升子序列模型-拦截导弹" 下面思路只讲如何运用这些东西来解这道题 强 ...

  4. 拦截导弹 导弹防御系统

    拦截导弹 & 导弹防御系统 拦截导弹 导弹防御系统 拦截导弹 题目链接:acwing1010. 拦截导弹 题目描述: 输入输出: 分析: 第一个问题为输出最长递减子序列,由于导弹数在1000以 ...

  5. 导弹防御系统,如何跟蜻蜓的大脑学习计算?

    来源:大数据文摘 作者:Frances Chance 多雨的夏季,蜻蜓最为常见,这些美丽的生物的飞行速度极快,狩猎能力也极为出色:蜻蜓狩猎的成功率捕获了高达95% ,它们一天可以吃掉数百只蚊子. 这种 ...

  6. 问题 : 导弹防御系统

    题目描述 某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...

  7. CG14导弹防御系统

    [问题描述] 某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的 ...

  8. 【NOIP2013模拟】导弹防御塔

    题目 Freda的城堡-- "Freda,城堡外发现了一些入侵者!" "喵-刚刚探究完了城堡建设的方案数,我要歇一会儿嘛lala~" "可是入侵者已经 ...

  9. 信息学奥赛第十节 —— 贪心算法(渡河问题POJ 1700 Crossing River + 拦截导弹的系统数量求解)

    复习概念 贪心算法又叫贪婪算法,是指在对问题求解时,总是做出在当前看来是最好的选择.也就是说,贪心算法不从整体最优上加以考虑,它所做出的是在某种意义上的局部最优解. 无后效性:贪心算法不是对所有问题都 ...

  10. 会玩,有人用 Python 模拟导弹防御!

    作者:半壶砂 https://www.cnblogs.com/halfsand/p/7976636.html 最近中|东闹得凶,除了对某色列强烈谴责,最吸引眼球的要是他们的铁穹防御系统. 那如何用Py ...

最新文章

  1. python同步赋值原理,Python直接赋值及深浅拷贝原理详解
  2. css布局,让侧边栏高度撑满,并且不会随着屏幕内容滚动
  3. Ubuntu 18.x 环境下mysql创建用户并更改用户权限
  4. php use include区别,php use和include区别总结
  5. keep老是显示服务器开小差,nginx+keepalived高可用服务器宕机解决方案
  6. 三星s9android recovery,三星手机怎么进入recovery模式?详细图文教程指导
  7. 2020年上半年小程序互联网发展报告
  8. 26元买4500斤脐橙,农民淘宝店被主播带头薅亏700万,“羊毛党”太狠了!
  9. python运行界面黑色_在Python中使用open执行轮廓检测后,如何使图像的背景变黑?...
  10. css hack 笔记 for ie8,ie7
  11. 对springboot整合mybatis -- 不一样的看法
  12. java properties native2ascii_使用native2ascii针对中文乱码,进行转码操作,用于native2ascii处理properties文件...
  13. Axure原型设计说明
  14. matlab找异步电机,基于Matlab的异步电动机仿真
  15. Spring Boot Admin配置安全验证
  16. 数据泄露,数据防泄密该怎么做?
  17. CoreJava(第二章)Java基础
  18. 为什么一定要掌握自学能力?
  19. C语言基础向——二级总结
  20. 微软研究院科大实习生聚餐

热门文章

  1. Android证书信任问题与大表哥
  2. ReactNative仿支付宝付款密码输入框
  3. 【Android】Android Studio Profiler Memery (一)
  4. Processing绘制星空-2-绘制流星
  5. 十四、反射(高琪java300集+java从入门到精通笔记)
  6. 1- mongoDB安装及基础
  7. 2018年上半年阅读总结(系统架构师)
  8. 琢磨事琢磨人琢磨钱,成大事也!
  9. dub怎么生成这么大的垃圾呢.
  10. python游戏书籍推荐_有什么好的自学 Python 的书籍推荐?