#include<stdio.h>
#include<cmath>
#include<algorithm>
using namespace std;
int a[3005],dp[3005],x[3005],y[3005],n,m;
inline int hx(int i,int j){
return x[i]-x[j-1];
}
inline int hy(int i,int j){
return y[i]-y[j-1];
}
inline bool f(int i,int j){
if(hx(i,j)==0) return 1;
if(hy(i,j)==0) return 1;
if(abs(hx(i,j)-hy(i,j))<=m) return 1;
return 0;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
x[i]=x[i-1];
y[i]=y[i-1];
if(a[i]==1) ++x[i];
else ++y[i];
}
dp[1]=1;
for(int i=2,j;i<=n;i++){
for(j=i;j>=1&&f(i,j);j--){
if(!dp[i]) dp[i]=dp[j]+1;
else dp[i]=min(dp[i],dp[j]+1);
}
}
printf("%d",dp[n]);
return 0;
}
本蒟蒻的思路和题解一模一样,为什么只有 10 分?有意义的回复给好朋友的关注!