51nod--1134 最长递增子序列
2017-09-19 18:18
239 查看
题目链接:
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1134
代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
#define Min -1e9
#define MAX 50010
int a[MAX];
int vis[MAX];
int main()
{
int n,len=1;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n;i++)
vis[i]=Min;
vis[len]=a[1];
for(int i=2;i<=n;i++)
{
if(vis[len]<a[i])
vis[++len]=a[i];
else
{
int pos=upper_bound(vis+1,vis+len,a[i])-vis;//C++ upper_bound(first,last,val) 指向[first , last)中第一个>val的元素;
vis[pos]=a[i];
}
}
// for(int i=1;i<=len;i++)
// cout<<vis[i]<<" ";
// cout<<endl;
cout<<len<<endl;
return 0;
}
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1134
代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
#define Min -1e9
#define MAX 50010
int a[MAX];
int vis[MAX];
int main()
{
int n,len=1;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n;i++)
vis[i]=Min;
vis[len]=a[1];
for(int i=2;i<=n;i++)
{
if(vis[len]<a[i])
vis[++len]=a[i];
else
{
int pos=upper_bound(vis+1,vis+len,a[i])-vis;//C++ upper_bound(first,last,val) 指向[first , last)中第一个>val的元素;
vis[pos]=a[i];
}
}
// for(int i=1;i<=len;i++)
// cout<<vis[i]<<" ";
// cout<<endl;
cout<<len<<endl;
return 0;
}
相关文章推荐
- 51Nod-1134 最长递增子序列
- 51Nod 1134 最长递增子序列
- 51Nod 1134 最长递增子序列
- 51nod 1134最长递增子序列
- 51nod 1134 最长递增子序列
- 51nod 1134 最长递增子序列
- 51nod 1134 最长递增子序列
- 51nod 1134 最长递增子序列
- 51nod 1134 最长递增子序列
- 51Nod 1134 最长递增子序列
- 【51nod】1134 最长递增子序列
- 51nod 1134 最长递增子序列
- 51nod 1134 最长递增子序列
- 【51NOD-0】1134 最长递增子序列
- 51Nod-1134-最长递增子序列
- 51nod 1134 最长递增子序列(dp) 时间复杂度为O(nlogn)
- 51 nod 1134 最长递增子序列
- 51nod 最长递增子序列
- 51nod 1134 最长递增子序列(动态规划)
- 51Nod-1134 最长递增子序列【LIS】