标签:width max any nts opened range img script targe
题目链接:http://poj.org/problem?id=2533
Time Limit: 2000MS | Memory Limit: 65536K | |
Total Submissions: 55459 | Accepted: 24864 |
Description
Input
Output
Sample Input
7 1 7 3 5 9 4 8
Sample Output
4
Source
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cmath> 5 #include <algorithm> 6 #include <vector> 7 #include <queue> 8 #include <stack> 9 #include <map> 10 #include <string> 11 #include <set> 12 #define ms(a,b) memset((a),(b),sizeof((a))) 13 using namespace std; 14 typedef long long LL; 15 const double EPS = 1e-8; 16 const int INF = 2e9; 17 const LL LNF = 2e18; 18 const int MAXN = 1e6+10; 19 20 int dp[MAXN], a[MAXN]; 21 22 int main() 23 { 24 int n; 25 while(scanf("%d",&n)!=EOF) 26 { 27 for(int i = 1; i<=n; i++) 28 scanf("%d",&a[i]); 29 30 ms(dp, 0); 31 for(int i = 1; i<=n; i++) 32 for(int j = 0; j<i; j++) 33 if(j==0 || a[i]>a[j]) 34 dp[i] = max(dp[i], dp[j]+1); 35 36 int ans = -INF; 37 for(int i = 1; i<=n; i++) 38 ans = max(ans, dp[i]); 39 printf("%d\n",ans); 40 } 41 }
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cmath> 5 #include <algorithm> 6 #include <vector> 7 #include <queue> 8 #include <stack> 9 #include <map> 10 #include <string> 11 #include <set> 12 #define ms(a,b) memset((a),(b),sizeof((a))) 13 using namespace std; 14 typedef long long LL; 15 const double EPS = 1e-8; 16 const int INF = 2e9; 17 const LL LNF = 2e18; 18 const int MAXN = 1e6+10; 19 20 int dp[MAXN], a[MAXN]; 21 22 int main() 23 { 24 int n; 25 while(scanf("%d",&n)!=EOF) 26 { 27 for(int i = 1; i<=n; i++) 28 scanf("%d",&a[i]); 29 30 int len = 0; 31 for(int i = 1; i<=n; i++) 32 { 33 if(i==1 || a[i]>dp[len]) 34 dp[++len] = a[i]; 35 36 else 37 { 38 int pos = lower_bound(dp+1,dp+1+len,a[i]) - (dp+1); 39 dp[pos+1] = a[i]; 40 } 41 } 42 printf("%d\n",len); 43 } 44 }
POJ2533 Longest Ordered Subsequence —— DP 最长上升子序列(LIS)
标签:width max any nts opened range img script targe
原文地址:http://www.cnblogs.com/DOLFAMINGO/p/7624514.html