POJ P2385 [USACO 2004 November] Apple Catching【傻逼DP】
阿新 • • 發佈:2018-12-09
傻逼DP。
表示第分鐘的時候移動了步的最大蘋果樹。
轉移方程為:
其中表示第秒鐘掉下的蘋果來自哪棵樹。
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define ll long long
#define rep(i,x,y) for(ll i=(x);i<=(y);i++)
#define repd(i,x,y) for(ll i=(x);i>=(y);i--)
using namespace std;
const ll N=1e3+5;
const ll M=45;
ll n,m,ans,f[N][M];
ll tr[N],ty[N],cnt[N];
inline ll read() {
ll x=0;char ch=getchar();bool f=0;
while(ch>'9'||ch<'0' ){if(ch=='-')f=1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
return f?-x:x;
}
int main() {
// freopen("POJ2385.txt","r",stdin);
n=read(),m=read();
rep(i,1,n) tr[i]=read();
if(tr[1]==1) f[1][0]=1;
else f[1][1]=1;
rep(i,2 ,n) rep(j,0,m) {
f[i][j]=max(f[i-1][j],f[i][j-1]);
if((j&1)+1==tr[i]) f[i][j]++;
ans=max(ans,f[i][j]);
}
printf("%lld",ans);
return 0;
}