CodeForces 746D Green and Black Tea 有坑

题意很明显不解释

做法就是直接模拟

有一个坑的地方就是中间值会爆ll WA50

 

 1 #include<bits/stdc++.h>
 2 #define cl(a,b) memset(a,b,sizeof(a))
 3 #define debug(a) cerr<<#a<<"=="<<a<<endl
 4 using namespace std;
 5 typedef long long ll;
 6 typedef pair<int,int> pii;
 7 
 8 const int maxn=1e5+10;
 9 
10 int main()
11 {
12     int n,k,a[2];
13     scanf("%d%d%d%d",&n,&k,&a[0],&a[1]);
14     int mn=min(a[0],a[1]);
15     int mx=max(a[0],a[1]);
16     debug((mn+1)*k),debug(mx);
17     if(1ll*(mn+1)*k<mx) //这里(mn+1)*k会爆ll
18     {
19         printf("NO\n");
20         return 0;
21     }
22     char letter[2]= {'G','B'};
23     string ans="";
24     if(a[0]>a[1])
25     {
26         letter[0]='B',letter[1]='G';
27         swap(a[0],a[1]);
28     }
29     int cnt=0;
30     for(int i=0; i<n; i++)
31     {
32         if(a[0]<=a[1] && cnt<k)
33         {
34             ans+=letter[1];
35             a[1]--,cnt++;
36         }
37         else
38         {
39             ans+=letter[0];
40             cnt=0,a[0]--;
41         }
42     }
43     cout<<ans.substr(0,n)<<endl;
44     return 0;
45 }/*
46 
47 5 1 3 2
48 
49 7 2 2 5
50 
51 */

 

posted @ 2017-07-19 19:04  良将ℓ  阅读(241)  评论(0编辑  收藏  举报