poj 1631 Bridging signals
2011-07-22 20:05
232 查看
//最长严格上升子序列 #include<iostream> //时间复杂度为O(nlogn) #include<algorithm> #include<vector> using namespace std; int main() { int n,p,a; cin>>n; while(n--) { cin>>p>>a; vector<int> col; col.push_back(a); for(int i=1;i<p;++i) { cin>>a; if(a>col[col.size()-1]) col.push_back(a); else { int begin=0,end=col.size()-1,mid; while(end>begin) { mid=(begin+end)/2; if(col[mid]<a) //在这道题中,事实上也并不存在col[mid]==a的情况 begin=mid+1; else //当二者相等时执行end=mid; end=mid; } col[end]=a; } } cout<<col.size()<<endl; } return 0; }
时间复杂度为O(n^2) TLE
#include<iostream> //时间复杂度为O(n^2) TLE #include<algorithm> using namespace std; int ans[40005],dp[40005]; int main() { /*freopen("G:\\c++.txt", "r", stdin ) ;*/ int n,p; cin>>n; while(n--) { cin>>p; for(int i=0;i<p;++i) cin>>ans[i]; for(int i=0;i<p;++i) { dp[i]=1; for(int j=0;j<i;++j) if(ans[j]<ans[i]) dp[i]=max(dp[i],dp[j]+1); } cout<<*max_element(dp,dp+p)<<endl; } return 0; }
相关文章推荐
- POJ 1631 Bridging signals
- (经典)POJ-1631 LIS,偏序问题
- poj 1631 Bridging signals (LIS 之 n×logn 算法)
- POJ_1631_Bridging signals
- poj 1631
- poj1631 Bridging signals 加强版最长上升子序列
- POJ 1631 LIS 模板题
- Poj 1631 && Hdu 1950 Bridging signals【LIS】
- poj 1631 LIS nlogn
- POJ1631_Bridging signals【LIS】【二分法+栈】
- POJ1631最长单调递增子序列
- poj1631【最长递增子序列】
- POJ1631 Bridging signals(DP类似最长子序列)
- POJ--1631
- poj-1631-Bridging signals-最长上升序列(LIS)
- POJ 1631 nlogn求LIS
- POJ 1631 Bridging signals(最长上升子序列 nlgn做法)
- DP.單調隊列::poj1631 Bridging signals
- poj 1631 Bridging signals
- POJ - 1631-Bridging signals (LIS二分模板题)