题解

zhuhanming 2022-11-19 9:59:02 2022-11-19 10:01:29 14 返回题目

#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[5000],f[5000];
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=n;i++){
		f[i]=1e9;
		int s1=0,s2=0;
		for(int j=i;j>=1;j--){
			if(a[j]==1)s1++;
			if(a[j]==2)s2++;     //往前扫时顺便统计1和2的个数
			if(s1==0||s2==0||abs(s1-s2)<=m){
				f[i]=min(f[i],f[j-1]+1);   //求 最小 长度
			}
		}
	}
	cout<<f[n]<<"\n";
	return 0;
}

{{ vote && vote.total.up }}