Binary String Constructing CodeForces - 1003B (思维,构造,STL)

题意:给你a,b,x。输出任意一个长度为a+b的二进制串,满足 Si != Si+1的下标个数为x个且必须包含a个0和b个1。

题解:先一替一个构造出x,然后直接把剩下的的0和1全部插入一个相邻的0和1旁边就行了。利用string自带insert还有string的自定义初始化会是代码实现变得异常简单。(刚开始自己手动实现这个过程,很麻烦......)

AC代码:

#include <iostream>
#include <cstring>
#include <cstdio>
#include <map>
#include <algorithm>
#define int long long
using namespace std;
const int maxn=1e6+5;
int a[maxn],b[maxn];
main() {
	int a,b,x;
	cin>>a>>b>>x;
	string ans;
	int flag=1;
	if(a>b)flag=0; 
	for(int i=0;i<=x;i++){
		if(flag)ans+="1",b--,flag=0;
		else ans+="0",a--,flag=1;
	}
	ans.insert(ans.find("0"),string(a,'0'));
	ans.insert(ans.find("1"),string(b,'1'));
	cout<<ans<<endl;
}

猜你喜欢

转载自blog.csdn.net/Alanrookie/article/details/107533080
今日推荐