标签:for int target integer using define div reg ble
Time Limit: 2000MS | Memory Limit: 65536K | |
Total Submissions: 38980 | Accepted: 17119 |
Description
Input
Output
Sample Input
7 1 7 3 5 9 4 8
Sample Output
4
Source
#include<iostream> #include<algorithm> #include<stdio.h> #include<string.h> #include<stdlib.h> #include<queue> using namespace std; int n; int a[1001]; int dp[1010]; int main() { while(scanf("%d",&n)!=EOF) { int maxx = -1; for(int i=0;i<n;i++) { scanf("%d",&a[i]); } for(int i=0;i<n;i++) { dp[i] = 1; for(int j=0;j<i;j++) { if(a[i]>a[j] && dp[j]+1>dp[i]) { dp[i] = dp[j] + 1; } } if(maxx < dp[i]) { maxx = dp[i]; } } printf("%d\n",maxx); } return 0; }
#include<iostream> #include<algorithm> #include<stdio.h> #include<string.h> #include<stdlib.h> #define inf 999999 using namespace std; int n; int dp[1010]; int a[1010]; int res(int len,int num) { int l = 0,r = len; while(l!=r) { int mid = (l+r)>>1; if(dp[mid] == num) { return mid; } else if(dp[mid]<num) { l = mid + 1; } else if(dp[mid]>num) { r = mid; } } return l; } int main() { while(scanf("%d",&n)!=EOF) { for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } int len = 1; dp[0] = -1; for(int i=1;i<=n;i++) { dp[i] = inf; int k = res(len,a[i]); if(k == len) { len++; } dp[k] = a[i]; } printf("%d\n",len-1); } return 0; }
POJ 2533 Longest Ordered Subsequence(DP 最长上升子序列)
标签:for int target integer using define div reg ble
原文地址:http://www.cnblogs.com/zsychanpin/p/6884550.html