标签:
如图,原本左右端口应当按顺序连接。现在只有切除部分线路,使得任何线路都不相交。希望你写一个程序计算最后剩下多少线路?
话句话说就是求最长上升序列的长度
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 using namespace std; 5 const int INF=100000; 6 int stick[40000]; 7 int dp[40000]; 8 int main() 9 { 10 int T; 11 cin>>T; 12 while(T--) 13 { 14 int n; 15 cin >> n; 16 for (int i = 0; i < n; ++i) 17 { 18 cin >>stick[i]; 19 } 20 fill(dp,dp+n,INF); 21 for (int j = 0; j < n; ++j) 22 { 23 *lower_bound(dp,dp+n,stick[j])=stick[j]; 24 } 25 cout<<lower_bound(dp,dp+n,INF)-dp<<endl; 26 } 27 return 0; 28 }
标签:
原文地址:http://www.cnblogs.com/xlsryj/p/4768420.html