导弹拦截(最长非上升子序列和最长上升子序列)

news/2024/11/28 5:45:37/

题目描述

题目链接
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。

输入导弹依次飞来的高度(雷达给出的高度数据是 \le 50000≤50000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。

输入格式

11行,若干个整数(个数 \le 100000≤100000)

输出格式

22行,每行一个整数,第一个数字表示这套系统最多能拦截多少导弹,第二个数字表示如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。

输入输出样例

输入

1
389 207 155 300 299 170 158 65

输出

1
2
6
2

题解

第一个要输出的显而易见是最长非上升子序列, 但是第二问就有意思了, 是求最长上升子序列。

ac代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//#include <bits/stdc++.h>
#include <iostream>
#include <stack>
#include "algorithm"
#include "cstdio"
#include "queue"
#include "set"
#include "cstring"
#include "string"
#include "map"
#include "vector"
#include "math.h"
#include "utility"   // pair头文件
#define esp 1e-6
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int INF = 0x3f3f3f3f;
const int N = 1e6 + 5;
const int M = 1e9 + 5;int a[N];int dp1[N], dp2[N], len1, len2;
int main(){int n = 1;char c;while(cin >> a[n]){c = getchar();if (c != ' ')break;n++;}len1 = len2 = 1;dp1[1] = dp2[1] = a[1];for (int i = 2; i <= n; i++){if (a[i] <= dp1[len1])dp1[++len1] = a[i];else*upper_bound(dp1 + 1, dp1 + len1 + 1, a[i], greater<int>()) = a[i];if (a[i] > dp2[len2])dp2[++len2] = a[i];else*lower_bound(dp2 + 1, dp2 + len2 + 1, a[i]) = a[i];}printf("%d\n%d\n", len1, len2);return 0;
}

具体关于lis的总结: 请戳此

1
恰似你一低头的温柔,娇弱水莲花不胜寒风的娇羞, 我的心为你悸动不休。  --mingfuyan

http://www.ppmy.cn/news/126033.html

相关文章

【Uva 10723】Cyborg Genes

【Link】: 【Description】 给你两个串s1,s2; 让你生成一个串S; 使得s1和s2都是S的子列; 要求S最短; 求S的不同方案个数; 【Solution】 设两个串的长度分别为n1和n2; 则答案为n1n2-两个串的最长公共子序列 不同的串则可以在求最长公共子序列的时候顺便求出; 设dp2[…

dos批处理中%~dp0%的说明

%~dp0 “d”为Drive的缩写&#xff0c;即为驱动器&#xff0c;磁盘、“p”为Path缩写&#xff0c;即为路径&#xff0c;目录cd是转到这个目录&#xff0c;使用 /D 开关&#xff0c;除了改变驱动器的当前目录之外&#xff0c;还可改变当前驱动器。 选项语法:~0 - 删除任何引号(&…

【硬件】【USB】【Type-C】

Type-C 接口优点&#xff1a; 接口信号对称分布&#xff0c;支持正反插兼容 USB3.1、USB3.0、USB2.0、USB1.1最高传输速率支持到 10Gbps最大功率支持 100W&#xff08;20V&5A&#xff09;支持 DisplayPort video 和 4路 audio channel 接口定义 公头&#xff1a; 母头&a…

动态规划——导弹拦截(最长不上升子序列、最长上升子序列)

题目链接 题目描述 某国为了防御敌国的导弹袭击&#xff0c;发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷&#xff1a;虽然它的第一发炮弹能够到达任意的高度&#xff0c;但是以后每一发炮弹都不能高于前一发的高度。某天&#xff0c;雷达捕捉到敌国的导弹来袭。…

算法---LeetCode 198. 打家劫舍

1. 题目 原题链接 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上 被小偷闯入&#xff0c;系统会自动报警。 给定一个代表…

[kuangbin带你飞]专题十二 基础DP1 -B - Ignatius and the Princess IV

“OK, you are not too bad, em… But you can never pass the next test.” feng5166 says. “I will tell you an odd number N, and then N integers. There will be a special integer among them, you have to tell me which integer is the special one after I tell y…

Android P DP1:WiFi-RTT、刘海、多摄像头、GIF动画、NNAPI 1.1

\ 看新闻很累&#xff1f;看技术新闻更累&#xff1f;试试下载InfoQ手机客户端&#xff0c;每天上下班路上听新闻&#xff0c;有趣还有料&#xff01;\ \\ 谷歌发布了Android P第一个开发预览版&#xff08;DP1&#xff09;&#xff0c;其中有几项值得注意的新特性&#xff1a;…

[kuangbin带你飞]专题十二 基础DP1 H - Tickets HDU - 1260

题目描述 Jesus, what a great movie! Thousands of people are rushing to the cinema. However, this is really a tuff time for Joe who sells the film tickets. He is wandering when could he go back home as early as possible. A good approach, reducing the total …