璟雯院

珺璟如晔,雯华若锦

用户工具

站点工具


icpc:problems:704d_genius_s_gambit
problems
名称Genius's Gambit
题目编号704D
题目链接codeforces.com/…
来源CodeForces
算法分类构造
难易程度小有难度

Genius's Gambit

想法

先1后0,然后移动y串,k最大也就a+b-2。每次特判一下就好。

代码实现

#include<cstdio>//uncle-lu
#include<algorithm>
template<class T>void read(T &x)
{
	x=0;int f=0;char ch=getchar();
	while(ch<'0'||ch>'9') { f|=(ch=='-'); ch=getchar(); }
	while(ch<='9'&&ch>='0') { x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); }
	x = f ? -x : x;
	return ;
}
 
int main()
{
	int a, b, k;
	read(a);read(b);read(k);
	if(b == 1)
	{
		if(k>0)
			printf("No");
		else
		{
			printf("Yes\n");
			for(int i=1; i<=a+b; ++i)
				if(i==1)
					printf("1");
				else
					printf("0");
			printf("\n");
			for(int i=1; i<=a+b; ++i)
				if(i==1)
					printf("1");
				else
					printf("0");
		}
		return 0;
	}
	if(a == 0)
	{
		if(k>0)
			printf("No");
		else
		{
			printf("Yes\n");
			for(int i=1; i<=a+b; ++i)
				printf("1");
			printf("\n");
			for(int i=1; i<=a+b; ++i)
				printf("1");
		}
		return 0;
	}
 
	if(k > a + b - 2)
	{
		printf("No");
		return 0;
	}
 
	printf("Yes\n");
	for(int i=1; i<=a+b; i++)
		if(i<=b)
			printf("1");
		else
			printf("0");
	printf("\n");
 
	if(k <= a)
	{
		for(int i=1; i<=a+b; i++)
		{
			if(i<b)
				printf("1");
			else if(i<b+k)
				printf("0");
			else if(i==b+k)
				printf("1");
			else
				printf("0");
		}
	}
	else
	{
		for(int i=1; i<a+b; ++i)
		{
			if(i<b-(k-a))
				printf("1");
			else if(i==b-(k-a))
				printf("0");
			else if(i<b+1)
				printf("1");
			else
				printf("0");
		}
		printf("1");
	}
 
	return 0;
}
/app/www/public/data/pages/icpc/problems/704d_genius_s_gambit.txt · 最后更改: 2023/10/01 10:25 由 温婕莺