746D Green and Black Tea

来源:互联网 发布:多点路线规划软件 编辑:程序博客网 时间:2024/06/04 19:07

题目链接:

http://codeforces.com/problemset/problem/746/D

题解:

题目大意:有一个人要喝a,b两种茶(总数为n),但是他有一个要求,不能连续喝同一种茶超过k次,让你输出满足条件的喝茶的过程。
这题的思路很重要,自己一开始是想每隔k次放一次a,b中的少的那个茶, 但是这么弄会出现一个问题,放茶的数量可能达不到题目中的要求(不能很好的满足题目中a,b的个数),因此需要转换一下思路,在满足条件的情况下,模拟过程就行了。

代码 :

#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define met(a,b) memset(a,b,sizeof(a))#define inf 0x3f3f3f3fint main(){    int n,k,a,b;    scanf("%d%d%d%d",&n,&k,&a,&b);    string ans="";    char ra='G',rb='B';    int cnt=0;    while(a+b>0)    {        if(a<b||cnt>=k)        {            swap(a,b);            swap(ra,rb);            cnt=0;        }        if(a<=0)        {            printf("NO\n");            return 0;        }        a--;        cnt++;        ans+=ra;    }    cout<<ans<<endl;}
0 0
原创粉丝点击