joj 1279 最长上升子序列 NLogN
2010-07-23 23:32
369 查看
#include<iostream>
#include<cstdlib>
using namespace std;
int a[10005],dp[10005],ord[1005];
int main()
{
int n=1;
while(cin>>a
) n++;n--;
int len=0,maxn=0;
for(int i=1;i<=n;i++)
{
int left=1,right=len,mid;
while(right>=left)
{
mid=(left+right)/2;
if(ord[mid]>=a[i]) right=mid-1;
else left=mid+1;
}
dp[i]=left;
ord[left]=a[i];
if(left>len) len=left;
if(dp[i]>maxn) maxn=dp[i];
}
cout<<"Max hits: "<<maxn<<endl;
system("pause");
return 0;
}
#include<cstdlib>
using namespace std;
int a[10005],dp[10005],ord[1005];
int main()
{
int n=1;
while(cin>>a
) n++;n--;
int len=0,maxn=0;
for(int i=1;i<=n;i++)
{
int left=1,right=len,mid;
while(right>=left)
{
mid=(left+right)/2;
if(ord[mid]>=a[i]) right=mid-1;
else left=mid+1;
}
dp[i]=left;
ord[left]=a[i];
if(left>len) len=left;
if(dp[i]>maxn) maxn=dp[i];
}
cout<<"Max hits: "<<maxn<<endl;
system("pause");
return 0;
}
相关文章推荐
- 最长上升子序列(LIS)长度的O(n^2)与O(nlogn)算法
- <序列DP>O(nlogn)的最长上升子序列
- 最长上升子序列(NlogN)总结
- 最长上升子序列 nlogn
- 如何用O(nlogn)的的速度求解最长上升(下降)子序列
- 最长上升子序列(LIS)长度的O(nlogn)算法
- hdu 1025 Constructing Roads In JGShining's Kingdom 最长上升序列nlogn
- 动态规划:最长上升子序列(二分算法 nlogn)
- 最长上升子序列 O(nlogn)
- Codevs 3955 最长严格上升子序列(加强版) dp (nlogn做法)
- [算法] poj 3903 最长上升子序列 dp vs (二分 nlogn)
- 蓝桥杯算法训练拦截导弹【最长上升子序列 & 最长非下降子序列nlogn 和 n^2】
- HDU 5748 最长上升子序列的长度nlogn(固定尾部)
- 最长上升子序列(LIS)长度的O(nlogn)算法
- nlogn求最长上升子序列 (POJ2533)
- poj 1631 / nlogn 算法 求 最长上升子序列长度
- 奶牛排队(USACO)( JSOI夏令营2017 day1 T2 ) * * *【O(nlogn)最长上升子序列】
- 最长上升子序列 O(nlogn)解法 (转)
- 题目1533:最长上升子序列 (nlogn | 树状数组)
- 最长上升子序列、最长下降子序列的DP算法由O(n^2)到O(nlogn)算法