POJ2533-Longest Ordered Subsequence

來源:互聯網
上載者:User

 

轉載請註明出處:優YoU

http://user.qzone.qq.com/289065406/blog/1300023619

 

提示:

動態規劃,求LIS最大不下降子序列

 

O(n^2)和O(n*logn)演算法都能完美AC

 

不懂的就去看看LIS的概念就會做了

 

 

我把兩種演算法都貼出來:

 

 

//Memory Time //228K   16MS //O(n^2)演算法#include<iostream>using namespace std;int main(int i,int j){int n;while(cin>>n){int* sq=new int[n];int* dp=new int[n];  //dp[i]表示以第i個位置為終點的最長不下降序列的長度for(i=0;i<n;i++)cin>>sq[i];int max_length=0;for(i=0;i<n;i++){dp[i]=1;  //初始化dp[0]=1,其他最小值為1for(j=0;j<i;j++)if(sq[j]<sq[i] && dp[i]<dp[j]+1)dp[i]=dp[j]+1;if(max_length<dp[i])max_length=dp[i];}cout<<max_length<<endl;delete sq,dp;}return 0;}

 

===========華麗的分割線=============

 

 

//Memory Time //224K   0MS //O(n*logn)演算法#include<iostream>using namespace std;const int inf=10001;int binary_search(int ord[],int digit,int length)   //二分法搜尋digit,若str中存在digit,返回其下標{                                                   //若不存在,返回str中比digit小的最大那個數的(下標+1)int left=0,right=length;int mid;while(right!=left){mid=(left+right)/2;if(digit==ord[mid])return mid;else if(digit<ord[mid])right=mid;elseleft=mid+1;}return left;}int main(int i,int j){int n;while(cin>>n){int* sq=new int[n+1];int* ord=new int[n+1];  //對於dp[]的每一個取值k,ord[k]記錄滿足dp[i]=k的所有sq[i]中的最小值,即ord[k]=min{sq[i]} (dp[i]=k)for(i=1;i<=n;i++)cin>>sq[i];int max_length=0;ord[0]=-1;  //下界無窮小int len=1;  //ord的長度for(i=1;i<=n;i++){ord[len]=inf;  //上界無窮大,指標len總是指向ord最後一個元素的後一位j=binary_search(ord,sq[i],len);if(j==len)  //sq[i]大於ord最大(最後)的元素len++;ord[j]=sq[i];}cout<<len-1<<endl; //len要減去ord[0]的長度1delete sq,ord;}return 0;}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.