题目描述:LIS(Longest Increasing Subsequence)模板题

分析:O(n^2)的方法

状态表示:d[i]表示以i结尾的最长上升子序列长度

转移方程:d[i]=max{ 1,d(j)+1 } ( j=1,2,3,...,i-1且A[j]<A[i] )

即A[j]<A[i],d[i]=d[j]+1

A[j]>=A[i],d[i]=1

 #include<cstdio>
int main()
{
int N,a[],d[];
scanf("%d",&N);
for(int i=;i<N;i++)
scanf("%d",&a[i]);
int max=;
for(int i=;i<N;i++)
{
d[i]=;
for(int j=;j<i;j++)
{
if(a[j]<a[i]&&d[j]+>d[i])
d[i]=d[j]+;
}
if(d[i]>max) max=d[i];
}
printf("%d\n",max);
return ;
}

O(nlogn)的方法:

 #include<cstdio>
#include<algorithm>
using namespace std;
const int INF=;
int N,a[],d[],g[];
int main()
{
scanf("%d",&N);
for(int i=;i<N;i++)
scanf("%d",&a[i]);
for(int i=;i<=N;i++) g[i]=INF;
int ans=;
for(int i=;i<N;i++)
{
int k=lower_bound(g+,g++N,a[i])-g;
d[i]=k;
g[k]=a[i];
ans=max(ans,d[i]);
}
printf("%d\n",ans);
return ;
}

最新文章

  1. SecondaryNameNode的工作流程
  2. AWS-CDH5.5安装-安装
  3. Linux常用命令集合
  4. jQuery简介
  5. asp.net权限控制配置web.config
  6. OAF与XML Publisher集成(转)
  7. 关于JavaScript是否会阻塞图片加载
  8. 八、CCMenu和CCMenuItem
  9. 【BZOJ】【3205】【APIO2013】机器人robot
  10. MyEclipse_6.0.1GA_E3.3.1集成版下载地址
  11. Android开发之发送邮件功能的实现(源代码分享)
  12. 基于蓝牙4.0(Bluetooth Low Energy)胎压监测方案设计
  13. php 特别的函数
  14. Linux安装JDK完整步骤
  15. Java的xml与map,与Bean互转
  16. matplotlib 直方图绘制详解
  17. mysql修改表操作
  18. nginx高性能WEB服务器系列之七--nginx反向代理
  19. Cocos2dx&amp;amp;Lua - UI显示优化之怎样解决解析大量json文件
  20. testng入门_单元测试

热门文章

  1. Linux中JDK环境变量的配置
  2. linux下更改文件夹所属用户和用户组
  3. squid基础配置
  4. DataGridView 中CheckBox 获取状态
  5. [原创]基于html5新标签canvas写的一个小画板
  6. 000 VS2013 c++ 框架
  7. Junit单元测试中优先使用AssertThat
  8. JAVA内部类(转)
  9. 【转载】openldap 备份与导入 及相关问题--扩展
  10. 创建ubuntu软件源