Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 13447 | Accepted: 6549 |
Description
Input
Output
Sample Input
7 2 2 1 1 2 2 1 1
Sample Output
6
Hint
Source
还要预处理一下。
1 #include <cstdio> 2 #include <algorithm> 3 using namespace std; 4 int dp[2000][35],a[2000];//dp[i][j]:在i时来回j次 5 int inv(int m) 6 { 7 if(m==1) return 2; 8 else return 1; 9 } 10 int main() 11 { 12 int t,w,a[2000],maxnum=-1; 13 scanf("%d%d",&t,&w); 14 for(int i=1;i<=t;i++) scanf("%d",&a[i]); 15 for(int i=1;i<=t;i++) 16 dp[i][0]=dp[i-1][0]+a[i]%2; 17 for(int i=1;i<=t;i++) 18 for(int j=1;j<=w;j++) 19 { 20 dp[i][j]=max(dp[i-1][j-1],dp[i-1][j]); 21 if(a[i]==j%2+1) 22 dp[i][j]++;//拿住苹果 23 } 24 printf("%d",dp[t][w]); 25 return 0; 26 }
原文:http://www.cnblogs.com/noblex/p/7762833.html