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

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

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

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

输入格式

输入包含多组测试用例。

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

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

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

输出格式

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

数据范围

1≤n≤50

输入样例:

5
3 5 2 4 1
0

输出样例:

2

样例解释

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

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

代码:

/*
up数组表示所有严格上升子序列的结尾,它本身随下标是非严格单调下降的;down数组表示所有严格下降子序列的结尾,它本身随下标是非严格单调上升的,
*/
#include <bits/stdc++.h>
using namespace std;
const int N = 55;
int n;
int h[N];
int up[N], down[N];
int ans;void dfs(int u, int su, int sd)
{//回溯if (su + sd >= ans)return;if (u == n){//更新ans = min(ans, su + sd);return;}//非上升子序列覆盖个数int k = 0;while (k < sd && down[k] <= h[u])k++;if (k < sd){int t = down[k];down[k] = h[u];dfs(u + 1, su, sd);down[k] = t;}else{down[k] = h[u];dfs(u + 1, su, sd + 1);down[k] = 0;}k = 0;while (k < su && up[k] >= h[u])k++;if (k < su){int t = up[k];up[k] = h[u];dfs(u + 1, su, sd);up[k] = t;}else{up[k] = h[u];dfs(u + 1, su + 1, sd);up[k] = 0;}
}int main()
{while (cin >> n, n){for (int i = 0; i < n; i++)cin >> h[i];ans = n;dfs(0, 0, 0);cout << ans << endl;}return 0;
}

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

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

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

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

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

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

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

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

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

  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. shell 脚本常用参数
  2. USACO 2.4.1 The Tamworth Two
  3. 又见链表 --- 另一种Creat方式与反转
  4. 【七夕特殊礼物】Dubbo学习之SPI实战与debug源码
  5. JMETER 为什么需要分布式
  6. 号外号外~~OSS监控服务上线啦!!
  7. C/C++对文件的读写
  8. Windows蓝屏分析
  9. 推荐24款好用的数据可视化分析工具,个个堪称神器!
  10. 学习Python你必须了解的lenna小姐姐
  11. 超级详细的IDC搭建教程
  12. 5G 当自强,根系不能忘
  13. python里的非_python中或与非
  14. python定义一个dog类 类属性有名字_66-分析一下Dog类这个例子-构造函数和属性
  15. java 获取集合对象中某个属性不为空的数据集合 lambda获取【拉姆达表达式 】
  16. 智深正使得活泛 天空软件下载
  17. 基于word2vec的虚假新闻检测系统
  18. Java并发学习笔记(8)发布逸出
  19. T3升级到U8 步骤
  20. 洛谷P1892 [BOI2003]团伙

热门文章

  1. 网络工程师秋招面试总结
  2. Halcon union_adjacent_contours_xld详解
  3. shell打开wifi命令_android adb shell 中怎么开启wifi 热点?
  4. linux 压缩文件与解压文件
  5. 如何提取html 信息,从html中提取信息?
  6. 【EDM邮件营销】独立站卖家如何通过用户标签提高EDM邮件打开率
  7. 宏先生说:口罩和额温枪的套路!
  8. w10运行游戏计算机中丢失xinput1-3.dll,xinput1_3.dll丢失,详细教您电脑中丢失XINPUT1_3.dll怎么解决...
  9. HTB Doctor
  10. c语言课设雷霆战机编程,C语言写的雷霆战机