HDU-1257 最少拦截系统(LIS)
来源:互联网 发布:java android pdf 编辑:程序博客网 时间:2024/05/20 07:17
题意:中文略
解题思路:几天前A的题,这个题让你求出所给序列中,有几条最长下降子序列(相对),但是要是单纯的去求最长下降子序列的条数,就需要多搞个循环记录下降子序列的条数,时间可能会超时。 仔细想想这个题就是求最长上升子序列,并输出最长有多长就行了。
具体是如何想的呢,就是我们把整个问题反过来思考,设dp[i]为能拦截到的最高的高度,如果存在a[j] > a[i] 那么这个导弹就不能被系统拦截,就需要增加一个拦截系统,并更新最高能拦截到的导弹高度。
于是状态转移方程:dp[i] = max(dp[i], dp[j] + 1)于是此问题变成了, LIS。 关键是思路,这个题就是看思路广不广。
Description
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹.
怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救了,请帮助计算一下最少需要多少套拦截系统.
怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救了,请帮助计算一下最少需要多少套拦截系统.
Input
输入若干组数据.每组数据包括:导弹总个数(正整数),导弹依此飞来的高度(雷达给出的高度数据是不大于30000的正整数,用空格分隔)
Output
对应每组数据输出拦截所有导弹最少要配备多少套这种导弹拦截系统.
Sample Input
8 389 207 155 300 299 170 158 65
Sample Output
2
#include<algorithm>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<list>#include<iostream>#include<map>#include<queue>#include<set>#include<stack>#include<vector>using namespace std;int buf[10];//整型变量快速输入输出函数inline int readint(){ char c = getchar(); while(!isdigit(c)) c = getchar(); int x = 0; while(isdigit(c)) { x = x * 10 + c - '0'; c = getchar(); } return x;}inline void writeint(int i){ int p = 0; if(i == 0) p++; else while(i) { buf[p++] = i % 10; i /= 10; } for(int j = p - 1 ; j >= 0 ; --j) putchar('0' + buf[j]);}//////////////////////////////////////////////////////////////////////#define MAX_N 100005const int INF = 0x3f3f3f3f;int a[MAX_N];int dp[MAX_N];int main(){ int n; while(~scanf("%d", &n)) { int max_sum = 0; for(int i = 0 ; i < n ; i++) { a[i] = readint(); } for(int i = 0 ; i < n ; i++) { dp[i] = 1; for(int j = 0 ; j < i ; j++) { if(a[i] > a[j] && dp[j] + 1 > dp[i]) { dp[i] = dp[j] + 1; } } if(dp[i] > max_sum) { max_sum = dp[i]; } } cout<<max_sum<<endl; } return 0;}
0 0
- HDU-1257 最少拦截系统(LIS)
- HDU 1257 最少拦截系统(LIS)
- HDU 1257 最少拦截系统(LIS)
- HDU 1257 最少拦截系统 LIS
- hdu 1257 最少拦截系统 (LIS)
- HDU-1257-最少拦截系统-LIS
- HDU 1257 最少拦截系统 【LIS】
- HDU Problem 1257 最少拦截系统【LIS】
- HDU-1257 最少拦截系统(LIS)
- HDU-1257-最少拦截系统【LIS】
- HDU 1257 - 最少拦截系统(LIS)
- HDU 1257 最少拦截系统 LIS最长不减子序列
- hdu 1257 最少拦截系统【贪心 || DP——LIS】
- HDU 1257 最少拦截系统 【坑题,贪心,LIS】
- HDU 1257 最少拦截系统(LIS,DP,附宇神讲课笔记)
- HDU:1257 最少拦截系统(贪心+动态规划DP||LIS?)
- HDU-1257 最少拦截系统 【LIS转化模型(vector应用)】
- 【hdu 1257】最少拦截系统(LIS最长上升子序列)
- 华为OJ(表达式求值)
- c++函数返回局部变量
- JVM 优化经验总结(原文已发表在IBM开发者论坛)
- N-Queens
- Ubuntu12.04 安装adb
- HDU-1257 最少拦截系统(LIS)
- 书摘---网络搜集整理 (11--20)
- C#操作datatable
- opencv学习笔记 split(图像分割为3通道)
- Android Studio 'The same input jar is specified twice'
- 三次握手协议
- leetcode--Shortest Word Distance II
- 从cpan上安装perl模块
- 将一个数组中的值按逆序重新存放