CF1512C第二个点5595WA了,大佬们给看一下
  • 板块灌水区
  • 楼主dingyi2007
  • 当前回复4
  • 已保存回复4
  • 发布时间2021/8/26 09:09
  • 上次更新2023/11/4 08:59:41
查看原帖
CF1512C第二个点5595WA了,大佬们给看一下
551189
dingyi2007楼主2021/8/26 09:09
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<string>

using namespace std;

int T;

int main()
{
	scanf("%d",&T);
	for (int i=1;i<=T;i++)
	{
		int a,b;
		string s;
		scanf("%d%d",&a,&b);
		cin >> s;
		int len=s.length();
		if (len!=a+b)
		{
			printf("-1\n");
			continue;
		}
		if (a%2==1 && b%2==1)
		{
			printf("-1\n");
			continue;
		}
		int w=0,z=0;
		for (int j=0;j<len;j++)
		{
			if (s[j]=='0') w++;
			if (s[j]=='1') z++;
		}
		if (w>a || z>b)
		{
			printf("-1\n");
			continue;
		}
		bool gt=false;
		for (int j=0;j<len;j++)
		{
			
			if (s[j]=='0')
			{
				if (s[len-j-1]=='0' && j<len/2)
				{
					a-=2;
					continue;
				}
				if (s[len-j-1]=='1')
				{
					gt=true;
					break;
				}
				if (s[len-j-1]=='?')
				{
					if (a<=1)
					{
						gt=true;
						break;
					}
					else
					{
						a-=2;
						s[len-j-1]='0';
						continue;
					}
				}
			}
			if (s[j]=='1')
			{
				if (s[len-j-1]=='1' && j<len/2)
				{
					b-=2;
					continue;
				}
				if (s[len-j-1]=='0')
				{
					gt=true;
					break;
				}
				if (s[len-j-1]=='?')
				{
					if (b<=1)
					{
						gt=true;
						break;
					}
					else
					{
						b-=2;
						s[len-j-1]='1';
						continue;
					}
				}
			}
		}
		if (gt==true)
		{
			printf("-1\n");
			continue;
		}
		if (len%2==1)
		{
			if (s[len/2]=='0') a--;
			if (s[len/2]=='1') b--;
			if (s[len/2]=='?')
			{
				if (a%2==1)
				{
					s[len/2]='0';
					a--;
				}
				else if (b%2==1)
				{
					s[len/2]='1';
					b--;
				}
				else
				{
					printf("-1\n");
					continue;
				}
			}
		}
		if (a%2==1 || b%2==1)
		{
			printf("-1\n");
			continue;
		}
		for (int j=0;j<len;j++)
		{
			if (s[j]=='?')
			{
				if (a>1)
				{
					a-=2;
					s[len-j-1]='0';
					printf("0");
				}
				else
				{
					b-=2;
					s[len-j-1]='1';
					printf("1");
				}
			}
			else printf("%c",s[j]);
		}
		printf("\n");
	}

	return 0;
}

第二个点5595WA了,大佬们给看一下

2021/8/26 09:09
加载中...