标签:
Time Limit: 1000MS | Memory Limit: 30000K | |
Total Submissions: 15135 | Accepted: 4911 |
Description
Input
Output
Sample Input
8 1.86 1.86 1.30621 2 1.4 1 1.97 2.2
Sample Output
4
Source
1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring> 5 using namespace std; 6 const int MAX = 1000 + 10; 7 const double F = 10e-6; 8 double heigh[MAX]; 9 int dp1[MAX],dp2[MAX]; 10 void LCA(int n) 11 { 12 memset(dp1, 0, sizeof(dp1)); 13 dp1[1] = 1; 14 for(int i = 1; i <= n; i++) 15 { 16 int maxn = 0; 17 for(int j = i - 1; j > 0; j--) 18 { 19 if(heigh[i] > heigh[j]) 20 { 21 maxn = max(maxn,dp1[j]); 22 } 23 } 24 dp1[i] = max(dp1[i], maxn + 1); 25 } 26 } 27 void LDA(int n) 28 { 29 memset(dp2, 0, sizeof(dp2)); 30 dp2[n] = 1; 31 for(int i = n; i > 0; i--) 32 { 33 int maxn = 0; 34 for(int j = i + 1; j <= n; j++) 35 { 36 if(heigh[i] > heigh[j]) 37 { 38 maxn = max(maxn, dp2[j]); 39 } 40 } 41 dp2[i] = max(dp2[i], maxn + 1); 42 } 43 } 44 int Cout(int n) 45 { 46 int maxn = 0; 47 for(int i = 1; i <= n; i++) 48 { 49 int temp = 0; 50 for(int j = i + 1; j <= n; j++) 51 { 52 if(heigh[i] >= heigh[j]) 53 temp = max(temp, dp2[j]); 54 } 55 maxn = max(maxn, dp1[i] + temp); 56 } 57 return n - maxn; 58 } 59 int main() 60 { 61 int n; 62 while(scanf("%d", &n) != EOF) 63 { 64 for(int i = 1; i <= n; i++) 65 { 66 scanf("%lf", &heigh[i]); 67 } 68 LCA(n); 69 LDA(n); 70 printf("%d\n",Cout(n)); 71 } 72 return 0; 73 }
标签:
原文地址:http://www.cnblogs.com/zhaopAC/p/5158873.html