http://codeforces.com/contest/746/problem/D
这道题很有意思,意思让你生成一个喝茶的虚列,让这个序列中连续相同的片段长度不超过K。
首先考虑下无解的情况,如果多的那个(A)无法被分B(少的)+1段,那么无解,之后我们先把最下段的一个字符输出再判断要输出多少个就行
#include <bits/stdc++.h>
#include <cstring>
using namespace std;
int main()
{
ios::sync_with_stdio(0);
int n,k,a,b;
cin>>n>>k>>a>>b;
char c1 = 'G',c2 = 'B';
if(a <b) swap(a,b),swap(c1,c2);
if(a == b)
{
for(int i = 0;i<a;i++)
{
cout<<"GB";
}
return 0;
}
if(a > (b+1) * k) return cout<<"NO"<<endl,0;
int t = a - (b +1);
for(int i = 0;i<=b;i++)
{
cout<<c1;
int mn = min(k-1,t);
t -= mn;
for(int i = 0; i<mn;i++)
{
cout<<c1;
}
if( i != b) cout<<c2;
}
cout<<endl;
return 0;
}