hdu 1257 最少拦截系统

 1 #include<time.h>
 2 #include <cstdio>  
 3 #include <iostream>  
 4 #include<algorithm>
 5 #include<math.h> 
 6 #include <string.h>  
 7 #include<vector> 
 8 #include<queue>
 9 using namespace std;
10 
11 int dp[3005][3005],num[100005],a[100005];
12 
13 int main()
14 {
15     int n;
16     while(scanf("%d",&n)!=EOF)
17     {
18         for(int i=0;i<n;i++)
19         {
20             scanf("%d",&a[i]);
21             num[i]=a[i];
22         }
23         
24         sort(a,a+n);
25         dp[0][0]=0;
26         for(int i=0;i<n;i++)
27             for(int j=0;j<n;j++)
28             {
29                 if(a[i]==num[j])
30                     dp[i+1][j+1]=dp[i][j]+1;
31                 else
32                     dp[i+1][j+1]=max(dp[i+1][j],dp[i][j+1]);
33             }
34         printf("%d\n",dp[n][n]);
35     }
36     return 0;
37  } 

 

posted @ 2016-04-19 20:53  pter  阅读(115)  评论(0编辑  收藏  举报