题意:给你a,b,x。输出任意一个长度为a+b的二进制串,满足 Si != Si+1的下标个数为x个且必须包含a个0和b个1。
题解:先一替一个构造出x,然后直接把剩下的的0和1全部插入一个相邻的0和1旁边就行了。利用string自带insert还有string的自定义初始化会是代码实现变得异常简单。(刚开始自己手动实现这个过程,很麻烦......)
AC代码:
#include #include #include #include #include #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<