输出玄学求条
查看原帖
输出玄学求条
935896
Shellchen楼主2025/6/30 17:08
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+10,mod=1e9+7;
int dp[2][110][25000]; 
signed main()
{
	string s;
	cin>>s;
	int n=s.size();
	s="?"+s;
	int c0=0;
	for(int i=1;i<=n;i++) if(s[i]=='0') c0++;
	memset(dp,0x3f,sizeof(dp));
	int K=12000;
	dp[0][0][K]=0;
	for(int i=1;i<=n;i++)
	{
		memset(dp[i%2],0x3f,sizeof(dp[i%2]));
		for(int j=0;j<=i;j++)
		{
			int k=i-j-1;
			for(int p=-(n*n);p<=n*n;p++)
			{
				if(j) dp[i%2][j][p+K]=min(dp[i%2][j][p+K],dp[(i+1)%2][j-1][p+k+K]+(s[i]=='1'));
				if(j!=i) dp[i%2][j][p+K]=min(dp[i%2][j][p+K],dp[(i+1)%2][j][p-j+K]+(s[i]=='0'));
			}
		}
	}
	cout<<dp[n%2][c0][K]/2;
    return 0;
}
2025/6/30 17:08
加载中...