Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
简单DP 附代码#include<iostream> #include<cstring> #include<cstdio> #include<cstdlib> using namespace std; const int MAXN=2002 ; int apple[MAXN] ; int dp[MAXN][33] ; int Max(int x,int y) { return x>y ? x:y ; } int main() { int i,j,T,W ; // freopen("in.txt","r",stdin) ; while(cin>>T>>W) { memset(dp,0,sizeof(dp)) ; for(i=1 ;i<=T ;i++) cin>>apple[i] ; if(apple[1]==1) { dp[1][0]=1 ; dp[1][1]=0 ; } if(apple[1]==2) { dp[1][1]=1 ; dp[1][0]=0 ; } for(i=2 ;i<=T ;i++) for(j=0 ;j<=W ;j++) { if(j==0) { dp[i][j]=dp[i-1][j]+apple[i]%2 ; continue ; } dp[i][j]=Max(dp[i-1][j],dp[i-1][j-1]) ; if(j%2+1==apple[i]) dp[i][j]++ ; } int M=0 ; for(i=1 ;i<=W ;i++) M=Max(dp[T][i],M) ; cout<<M<<endl; } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator