#include<iostream> #include<cstdio> #include<cstring> using namespace std; const int maxn=1005; int f[1005][31]; int a[maxn][3]; int main() { int n,k,b; scanf("%d%d",&n,&k); memset(a,0,sizeof(a)); for(int i=1;i<=n;i++) { scanf("%d",&b); a[i][b]=1; //第i分钟编号为b的苹果树掉下苹果 } memset(f,0,sizeof(f)); f[1][0]=a[1][1]; for(int i=1;i<=n;i++) for(int j=0;j<=k;j++) { f[i][j]=f[i-1][j]+a[i][j%2+1]; //第i分钟不移动,总共移动了j次 if(j>0) f[i][j]=max(f[i][j],f[i-1][j-1]+a[i][j%2+1]); //移动,总共移动了j次 } int ans=0; for(int j=1;j<=k;j++) ans=max(ans,f[n][j]); printf("%d\n",ans); return 0; } //f[i][j]表示前i分钟移动了j次所获的苹果数
poj2385
猜你喜欢
转载自blog.csdn.net/zizahn/article/details/53178142
今日推荐
周排行