CDOJ 251 导弹拦截 最长递增子序列
点击打开链接
就是寻找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 导弹拦截 最长递增子序列相关推荐
- 拦截导弹(最长递增子序列)
题目描述:某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...
- 最长递增子序列问题 nyoj 17单调递增最长子序列 nyoj 79拦截导弹
一, 最长递增子序列问题的描述 设L=<a1,a2,-,an>是n个不同的实数的序列,L的递增子序列是这样一个子序列Lin=<aK1,ak2,-,akm>,其中k1< ...
- 51nod1134最长递增子序列(dp)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1134 这里说下,最长上升子序列和最长不降子序列几乎一样,只是判 ...
- 最长递增子序列的两种解法
以LeetCode-300为例: O(n^2)解法: dp数组表示以i结尾的最长递增子序列的长度 class Solution { public:int lengthOfLIS(vector<i ...
- 最长递增子序列问题的求解
一, 最长递增子序列问题的描述 设L=<a1,a2,-,an>是n个不同的实数的序列,L的递增子序列是这样一个子序列Lin=<aK1,ak2,-,akm>,其中k1<k2 ...
- 编程之美2.16 最长递增子序列
这道题目要求返回一个数字,这个数字代表一个数组中最长的递增子序列,当然,不要求这个序列是连续的,比如,有这样一个数组:{1, 3,5,7, 2, 9},那么这个数组的最长递增子序列就是5, ...
- 洛谷P2766-最长递增子序列问题
chunlvxiong的博客 题目描述: 给定正整数序列x1,...,xn (1≤n≤500). 1.计算其最长递增子序列的长度s. 2.计算从给定的序列中最多可取出多少个长度为s的递增子序列. 3. ...
- 最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离
最大子序列 最大子序列是要找出由数组成的一维数组中和最大的连续子序列.比如{5,-3,4,2}的最大子序列就是 {5,-3,4,2},它的和是8,达到最大:而 {5,-6,4,2}的最大子序列是{4, ...
- Java输出数组中最长递增子序列的代码
下面内容是关于Java输出数组中最长递增子序列的内容,希望对大伙有较大用途. package com.wzs;import java.util.ArrayList; import java.util. ...
最新文章
- 数据结构与算法(7-4)最短路径(迪杰斯特拉(Dijkstra)算法、弗洛伊德(Floyd)算法)
- 【SpringMVC】与权限拦截器冲突导致的Cors跨域设置失效问题
- 华为存储iscsi配置_网络+存储+虚拟化:三大要素构建新网络
- python计算平方面积_python中求平方
- July大神---SVM讲解
- linux games账号,linux for games
- 数据结构——树的理解路线(总)
- Spring的junit4测试集成
- Vue-cli proxyTable 解决开发环境的跨域问题
- requests库及相关知识点(get,post区别,params与data区别)
- Python安装pyqt4
- 处理微信公众号图片防盗链
- 图形学人物简史:两位图灵奖与奥斯卡得主的图形学研究往事
- 阳春三月,放飞希望---希望今年不再碌碌无为
- 补充:混淆矩阵、图像分割指标计算
- matlab外推预测函数,时间序列模型 (五): 趋势外推预测方法
- 梦幻跨服购买需要登录服务器未响应,《梦幻西游》手游跨服交易有什么是需要注意的_
《梦幻西游》手游官网-人人都玩,无处不在...
- Android仿QQ锁屏状态下消息提醒(震动+提示音)
- jmap命令(Java Memory Map)
- mysql查看表备注_mysql表中如何查看备注
热门文章
- 为啥led灯用一年后暗了很多_嫌原车的卤素“蜡烛灯”太暗,想换掉,该选氙气灯还是LED灯?...
- 网页快照是什么?对SEO优化有什么作用?
- 周期串java_求最小周期串
- python 函数进阶_Python学习入门基础:一篇文章搞定函数基础、函数进阶
- 360安全浏览器兼容模式怎么设置_360浏览器极速模式怎么设置
- 开发日记-20190611 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》
- Python读excel——xlrd
- python berkeley 操作——尤其提示 需版本匹配
- 深度解读Facebook刚开源的beringei时序数据库——数据压缩delta of delta+充分利用内存以提高性能...
- 用实例说明Spark stage划分原理