灵异问题
查看原帖
灵异问题
691641
Grow_楼主2024/12/14 20:28

RT

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,a[100005],s[100005],x,dp[100005];
signed main(){
	cin >> n >> m;
	for(int i = 1;i<=n;i++)cin >> a[i];//这行执行完后n的值会清零 
	for(int i = 1;i<=n;i++)s[i] = s[i-1]+(a[i]==1?-1:1);
	memset(dp,0x3f,sizeof(dp));
	dp[0] = 0;
	for(int i = 1;i<=n;i++){
		x = s[i];
		if(abs(x)<=m||abs(x)==i){
			dp[i] = 1LL;
			cout << dp[i] << " ";
			continue;
		}
		for(int j = 0;j<i;j++){
			x = s[i]-s[j];
			if(abs(x)<=m||abs(x)==i-j)dp[i] = min(dp[i],dp[j]+1);
		}
		cout << dp[i] << " ";
	}
	cout << dp[n];
	return 0;
}
2024/12/14 20:28
加载中...