点击打开链接

就是寻找LIS 并打印出来

dp[i]表示到包括第i个数的前i个的最长递增的长度

从数列从后往前找就好了 ,如果从前往后,前面的大数会覆盖掉后面的小数,就不对了

代码:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3
 4 const int maxn = 1e5+10;
 5
 6 int a[maxn],dp[maxn],ans[maxn];
 7 vector<int> v;
 8
 9 int main(){
10     int t; cin>>t;
11     while(t--){
12         int n; cin >> n;
13         for(int i=1; i<=n; i++)
14             cin >> a[i];
15         memset(ans,0x3f,sizeof(ans));
16         memset(dp,0,sizeof(dp));
17         v.clear();
18         int mx = -1;
19         for(int i=1; i<=n; i++){
20             int p = lower_bound(ans+1,ans+1+n,a[i])-ans;
21             ans[p] = a[i];
22             dp[i] = p;
23             mx = max(mx,p);
24         }
25
26         cout << mx << endl;
27         int k = maxn;
28         for(int i=n; i>=1; i--){
29             if(dp[i]==mx && a[i]<k){
30                 v.push_back(a[i]);
31                 k = a[i];
32                 mx--;
33             }
34         }
35         // int k = -1,cnt=1;
36         // for(int i=1; i<=n; i++){ // 不能正序,前面大的数会覆盖后面小的数 不能达到最长
37         //     if(dp[i]==cnt && a[i]>k){
38         //         v.push_back(a[i]);
39         //         k = a[i];
40         //         cnt++;
41         //     }
42         // }
43
44         for(int i=v.size()-1; i>=1; i--)
45             cout << v[i] << " ";
46         cout << v[0] << endl;
47     }
48 }

转载于:https://www.cnblogs.com/yxg123123/p/6827734.html

CDOJ 251 导弹拦截 最长递增子序列相关推荐

  1. 拦截导弹(最长递增子序列)

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

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

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

  3. 51nod1134最长递增子序列(dp)

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1134 这里说下,最长上升子序列和最长不降子序列几乎一样,只是判 ...

  4. 最长递增子序列的两种解法

    以LeetCode-300为例: O(n^2)解法: dp数组表示以i结尾的最长递增子序列的长度 class Solution { public:int lengthOfLIS(vector<i ...

  5. 最长递增子序列问题的求解

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

  6. 编程之美2.16 最长递增子序列

          这道题目要求返回一个数字,这个数字代表一个数组中最长的递增子序列,当然,不要求这个序列是连续的,比如,有这样一个数组:{1, 3,5,7, 2, 9},那么这个数组的最长递增子序列就是5, ...

  7. 洛谷P2766-最长递增子序列问题

    chunlvxiong的博客 题目描述: 给定正整数序列x1,...,xn (1≤n≤500). 1.计算其最长递增子序列的长度s. 2.计算从给定的序列中最多可取出多少个长度为s的递增子序列. 3. ...

  8. 最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离

    最大子序列 最大子序列是要找出由数组成的一维数组中和最大的连续子序列.比如{5,-3,4,2}的最大子序列就是 {5,-3,4,2},它的和是8,达到最大:而 {5,-6,4,2}的最大子序列是{4, ...

  9. Java输出数组中最长递增子序列的代码

    下面内容是关于Java输出数组中最长递增子序列的内容,希望对大伙有较大用途. package com.wzs;import java.util.ArrayList; import java.util. ...

最新文章

  1. 数据结构与算法(7-4)最短路径(迪杰斯特拉(Dijkstra)算法、弗洛伊德(Floyd)算法)
  2. 【SpringMVC】与权限拦截器冲突导致的Cors跨域设置失效问题
  3. 华为存储iscsi配置_网络+存储+虚拟化:三大要素构建新网络
  4. python计算平方面积_python中求平方
  5. July大神---SVM讲解
  6. linux games账号,linux for games
  7. 数据结构——树的理解路线(总)
  8. Spring的junit4测试集成
  9. Vue-cli proxyTable 解决开发环境的跨域问题
  10. requests库及相关知识点(get,post区别,params与data区别)
  11. Python安装pyqt4
  12. 处理微信公众号图片防盗链
  13. 图形学人物简史:两位图灵奖与奥斯卡得主的图形学研究往事
  14. 阳春三月,放飞希望---希望今年不再碌碌无为
  15. 补充:混淆矩阵、图像分割指标计算
  16. matlab外推预测函数,时间序列模型 (五): 趋势外推预测方法
  17. 梦幻跨服购买需要登录服务器未响应,《梦幻西游》手游跨服交易有什么是需要注意的_ 《梦幻西游》手游官网-人人都玩,无处不在...
  18. Android仿QQ锁屏状态下消息提醒(震动+提示音)
  19. jmap命令(Java Memory Map)
  20. mysql查看表备注_mysql表中如何查看备注

热门文章

  1. 为啥led灯用一年后暗了很多_嫌原车的卤素“蜡烛灯”太暗,想换掉,该选氙气灯还是LED灯?...
  2. 网页快照是什么?对SEO优化有什么作用?
  3. 周期串java_求最小周期串
  4. python 函数进阶_Python学习入门基础:一篇文章搞定函数基础、函数进阶
  5. 360安全浏览器兼容模式怎么设置_360浏览器极速模式怎么设置
  6. 开发日记-20190611 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》
  7. Python读excel——xlrd
  8. python berkeley 操作——尤其提示 需版本匹配
  9. 深度解读Facebook刚开源的beringei时序数据库——数据压缩delta of delta+充分利用内存以提高性能...
  10. 用实例说明Spark stage划分原理