10求调
  • 板块P1564 膜拜
  • 楼主taoyize
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/14 20:07
  • 上次更新2024/10/14 21:22:57
查看原帖
10求调
1097100
taoyize楼主2024/10/14 20:07
#include<bits/stdc++.h>
using namespace std;
int n,m;
const int mx=3e3+10;
int dp[mx],sum[mx][2];
int a[mx];
int main(){
	cin>>n>>m;
	memset(dp,0x3f,sizeof(dp));
	dp[0]=0;
	dp[1]=1;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		if(a[i]==1) sum[i][1]++;
		else sum[i][0]++;
	}
	for(int i=2;i<=n;i++){
		for(int j=i-1;j>=0;j--){
			if(abs((sum[i][0]-sum[j][0])-(sum[i][1]-sum[j][1]))<=m||
			(sum[i][0]-sum[j][0])==0||(sum[i][1]-sum[j][1])==0)
				dp[i]=min(dp[i],dp[j]+1);
		}
	}
	cout<<dp[n]<<endl;
}
2024/10/14 20:07
加载中...