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