LIS nlogn模板 http://acm.hdu.edu.cn/showproblem.php?pid=1950

  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <algorithm>
  4. #include <string>
  5. #include <math.h>
  6. #include <stdlib.h>
  7. #define maxn 40000+10
  8. using namespace std;
  9. int a[maxn],d[maxn],len;
  10. int bs(int i){
  11. int l,r,mid;
  12. l=,r=len;
  13. while(l<r){
  14. mid=(l+r)/;
  15. if(d[mid]>=a[i])r=mid;
  16. else l=mid+;
  17. }
  18. return l;
  19. }
  20. int main(){
  21. int T,n;
  22. scanf("%d",&T);
  23. while(T--){
  24. scanf("%d",&n);
  25. for(int i=;i<=n;i++)scanf("%d",&a[i]);
  26. d[]=a[];
  27. len=;
  28. for(int i=;i<=n;i++){
  29. if(a[i]>d[len])
  30. d[++len]=a[i];
  31. else{
  32. int pos=lower_bound(d,d+len,a[i])-d;
  33. d[pos]=a[i];//找到>=a[i]的并更新
  34. }
  35. }
  36. printf("%d\n",len);
  37. }
  38. return ;
  39. }

LIS n^2模板  http://poj.org/problem?id=2533

  1. #include <iostream>
  2. #include <cstring>
  3. #include <cstdlib>
  4. #include <stdio.h>
  5. #include <algorithm>
  6. #include <math.h>
  7. #define INF 0x3f3f3f3f
  8. #define maxn 10000+10
  9. using namespace std;
  10. int a[maxn],n,dp[maxn];
  11. int main()
  12. {
  13. while(cin>>n){
  14. int len=-;
  15. for(int i=;i<=n;i++)scanf("%d",&a[i]);
  16. dp[]=-INF;
  17. for(int i=;i<=n;i++){
  18. dp[i]=;
  19. for(int j=;j<i;j++){
  20. if(a[i]>a[j])//满足条件时
  21. dp[i]=max(dp[i],dp[j]+);
  22. if(dp[i]>len)len=dp[i];
  23. }
  24. }
  25. printf("%d\n",len);
  26. }
  27. return ;
  28. }

LIS n^2&nlogn模板的更多相关文章

  1. 最长上升子序列(LIS)nlogn模板

    参考https://www.cnblogs.com/yuelian/p/8745807.html 注意最长上升子序列用lower_bound,最长不下降子序列用upper_bound 比如123458 ...

  2. uva 10635 Prince and Princess(LCS成问题LIS问题O(nlogn))

    标题效果:有两个长度p+1和q+1该序列.的各种元素的每个序列不是相互同.并1~n^2之间的整数.个序列的第一个元素均为1. 求出A和B的最长公共子序列长度. 分析:本题是LCS问题,可是p*q< ...

  3. 最长递增子序列 LIS 时间复杂度O(nlogn)的Java实现

    关于最长递增子序列时间复杂度O(n^2)的实现方法在博客http://blog.csdn.net/iniegang/article/details/47379873(最长递增子序列 Java实现)中已 ...

  4. HDU 1950 Bridging signals (LIS,O(nlogn))

    题意: 给一个数字序列,要求找到LIS,输出其长度. 思路: 扫一遍+二分,复杂度O(nlogn),空间复杂度O(n). 具体方法:增加一个数组,用d[i]表示长度为 i 的递增子序列的最后一个元素, ...

  5. LIS的O(nlogn)算法

    出自蓝书<算法竞赛入门经典训练指南> 求最长上升子序列是很常见的可以用动态规划解决的问题…… 很容易根据最优子结构之类的东西得出 $\text{dp}[i]$为以第i个数结尾的最长上升子序 ...

  6. What Goes Up UVA - 481 LIS+打印路径 【模板】

    打印严格上升子序列: #include<iostream> #include<cstdio> #include<algorithm> #include<cst ...

  7. nlogn LIS模板

    nlogn 模板 最长上升 #include<bits/stdc++.h> using namespace std; ; int n,x,y,a[N],num[N],d[N],len; / ...

  8. LIS LCS n^2和nlogn解法 以及LCIS

    首先介绍一下LIS和LCS的DP解法O(N^2) LCS:两个有序序列a和b,求他们公共子序列的最大长度 我们定义一个数组DP[i][j],表示的是a的前i项和b的前j项的最大公共子序列的长度,那么由 ...

  9. 关于LIS和LCS问题的o(nlogn)解法

    o(n^2)解法就不赘述了,直接解释o(nlogn)解法 LIS最长递增子序列: 先明确一个结论:在长度最大为len的递增序列里若末尾元素越小,该递增序列越容易和后面的子序列构造出一个更长的递增子序列 ...

随机推荐

  1. 【jquery创建元素添加元素】

    使用jquery创建新元素的方法为:$(html标签),例如 $("<p></p>")创建了一个段落.注意此时只是创建了对象,尚未添加到文档节点中去:以下四 ...

  2. 如何禁止虚拟机自动获取DHCP分配的ip地址

    今天在看Hadoop视频学习的时候跟着视频里面修改ip地址,将虚拟机的ip地址修改为192.168.2.3,结果ifconfig显示ip地址为192.168.2.128,用物理主机去ping这两个ip ...

  3. 标准C程序设计七---00

    以下内容为阅读: <21天学通C语言>(第7版) 作者:Bradley Jones  Peter Aitken  Dean Miller(美), 姜佑译 人民邮电出版社  2014.11 ...

  4. spring解决乱码

    spring提供的工具类解决乱码问题 在web.xml配置中添加如下代码: <!--乱码处理--> <filter> <filter-name>encodingFi ...

  5. Hadoop 学习 HDFS

    1.HDFS的设计 HDFS是什么:HDFS即Hadoop分布式文件系统(Hadoop Distributed Filesystem),以流式数据访问模式来存储超大文件,运行于商用硬件集群上,是管理网 ...

  6. NOIP前必须记住的30句话

    NOIP前必须记住的30句话 1.比赛前一天晚上请准备好你的各种证件,事先查好去往考场的路线2.比赛之前请先调整你的屏幕分辨率到你喜欢的大小3.比赛之前请把编译器的字体调为你平时惯用的字体,尤其是注意 ...

  7. 如何删除xcode启动主页面项目列表

    Open Xcode, leave the splash screen up and choose "File", "Open Recent Projects" ...

  8. 【java】java 中 byte[]、File、InputStream 互相转换

    ========================================================================= 使用过程中,一定要注意close()掉各个读写流!! ...

  9. JAVA_MyEclipse如何加载Tomcat

          注意Tomcat不要放到Program Files这种有空格的路径下面!,下图所示是错误的      

  10. STL 笔记(二) 关联容器 map、set、multimap 和 multimap

    STL 关联容器简单介绍 关联容器即 key-value 键值对容器,依靠 key 来存储和读取元素. 在 STL 中,有四种关联容器,各自是: map 键值对 key-value 存储,key 不可 ...