最少拦截系统

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 80802    Accepted Submission(s): 31005

Problem Description
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹.
怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救了,请帮助计算一下最少需要多少套拦截系统.
 
Input
输入若干组数据.每组数据包括:导弹总个数(正整数),导弹依此飞来的高度(雷达给出的高度数据是不大于30000的正整数,用空格分隔)
 
Output
对应每组数据输出拦截所有导弹最少要配备多少套这种导弹拦截系统.
 
Sample Input
8 389 207 155 300 299 170 158 65
 
Sample Output
2
 
理解题意:
首先我们来看这个导弹,其实没啥用,就是给定一个长度的序列,让你从中找出一个最长的单调递增子序列
 
做题思路:
首先这个题有两种解法,第一种是将所给的序列逆序以后,再和原序列求最长公共子序列;第二种是直接dp。
 
代码:
#include <iostream>

using namespace std;

const int MAXN = ;
int n,num[MAXN]; int LIS(){
int ans = ;
int dp[MAXN];
dp[] = ;
for(int i = ;i <= n; i++){
int max = ;
for(int j = ;j < i; j++){
if(dp[j] > max && num[j] < num[i])
max = dp[j];
}
dp[i] = max + ;
if(dp[i] > ans)
ans = dp[i];
}
return ans;
} int main()
{
while(cin>>n){
for(int i = ;i <= n; i++)
cin>>num[i];
cout<<LIS()<<endl;
}
return ;
}

最长递增子序列-Hdu 1257的更多相关文章

  1. HDU 1257 最少拦截系统 最长递增子序列

    HDU 1257 最少拦截系统 最长递增子序列 题意 这个题的意思是说给你\(n\)个数,让你找到他最长的并且递增的子序列\((LIS)\).这里和最长公共子序列一样\((LCS)\)一样,子序列只要 ...

  2. 最长公共子序列(LCS)、最长递增子序列(LIS)、最长递增公共子序列(LICS)

    最长公共子序列(LCS) [问题] 求两字符序列的最长公共字符子序列 问题描述:字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字 ...

  3. (转载)最长递增子序列 O(NlogN)算法

    原博文:传送门 最长递增子序列(Longest Increasing Subsequence) 下面我们简记为 LIS. 定义d[k]:长度为k的上升子序列的最末元素,若有多个长度为k的上升子序列,则 ...

  4. 最长公共子序列(LCS)和最长递增子序列(LIS)的求解

    一.最长公共子序列 经典的动态规划问题,大概的陈述如下: 给定两个序列a1,a2,a3,a4,a5,a6......和b1,b2,b3,b4,b5,b6.......,要求这样的序列使得c同时是这两个 ...

  5. 最长递增子序列 O(NlogN)算法

    转自:点击打开链接 最长递增子序列,Longest Increasing Subsequence 下面我们简记为 LIS. 排序+LCS算法 以及 DP算法就忽略了,这两个太容易理解了. 假设存在一个 ...

  6. 51nod 1134 最长递增子序列

    题目链接:51nod 1134 最长递增子序列 #include<cstdio> #include<cstring> #include<algorithm> usi ...

  7. 动态规划 - 最长递增子序列(LIS)

    最长递增子序列是动态规划中经典的问题,详细如下: 在一个已知的序列{a1,a2,...,an}中,取出若干数组组成新的序列{ai1,ai2,...,aim},其中下标i1,i2,...,im保持递增, ...

  8. 最长递增子序列问题 nyoj 17单调递增最长子序列 nyoj 79拦截导弹

    一,    最长递增子序列问题的描述 设L=<a1,a2,…,an>是n个不同的实数的序列,L的递增子序列是这样一个子序列Lin=<aK1,ak2,…,akm>,其中k1< ...

  9. 2.16 最长递增子序列 LIS

    [本文链接] http://www.cnblogs.com/hellogiser/p/dp-of-LIS.html [分析] 思路一:设序列为A,对序列进行排序后得到B,那么A的最长递增子序列LIS就 ...

随机推荐

  1. C++-POJ1016-Numbers That Count

    无语,15步产生16个数,植树原理啊! 大水题,居然wa了好几次,唉,自己的问题. 略略略,就要封装成结构体,略略略. #include <set> #include <map> ...

  2. linux系统下如何打开端口

    1)vi /etc/sysconfig/iptables 2)-A INPUT -m state --state NEW -m tcp -p tcp --dport xxxxxxxxxx -j ACC ...

  3. mnist 数据集的识别源码解析

    在基本跑完识别代码后,再来谈一谈自己对代码的理解: 1      前向传播过程文件(mnist_forward.py) 第一个函数get_weight(shape, regularizer); 定义了 ...

  4. gVim for windows 简单使用教程

    vim 是一个具有很多命令的功能非常强大的编辑器.限于篇幅,在本教程当中    就不详细介绍了.本教程的设计目标是讲述一些必要的基本命令,而掌握好这    些命令,您就能够很容易将vim当作一个通用的 ...

  5. oracle11g UNDO使用率高,且unexpire过高

    1.查看使用率: col USED_PER for a60 SELECT A.TABLESPACE_NAME AS TABLESPACE_NAME, ,) AS TOTAL_GB, ,) AS FRE ...

  6. 深度学习之tensorflow框架(中)

    会话 开启会话 tf.Session用于完整的程序中 tf.InteractiveSession用于交互式上下文中的tensorflow 查看张量的值 都必须在会话里面 c_new_value=new ...

  7. supervisor的使用点滴

    supervisor的安装 pip install supervisor 安装成功后步骤 1.创建配置文件 echo_supervisord_conf  > /etc/supervisord.c ...

  8. 后台用map接收数据,报类型转换错误

    如果后台用接收接收前台传的数据时,因为不确定具体是哪一种类型而报错,可以使用  instanceOf if (dataMap.get("salePrice") instanceof ...

  9. 【10】DP青蛙跳台阶

    一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法. 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1 ...

  10. C语言最重要的知识点(电子文档)

    总体上必须清楚的: 1)程序结构是三种:  顺序结构 .选择结构(分支结构).循环结构.  2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个m ...