cf386(div2)大一狗ACM之路
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cf386(div2)大一狗ACM之路相关的知识,希望对你有一定的参考价值。
#cf386(div2)总结#
前两题很顺利的做了出来, c题扔了, D题wrong了5发才A掉。
A题签到题, 但是想多了, 代码写的有点长了。 找被整除最小值*7。
B题 读题读了一会, 读完了就有思路了, 1A。 字符串问题, 从后往前两个两个的放到新的字符串里, 一个从最左, 一个从最右, 模拟指针扫着放, 最后特判会不会扫到一起。
C题跳了没看, 最后做完了D题回来看了一眼没什么思路 日后再说。
D题, 恩。。 两个多小时都用在这题上面了, 20分钟的时候做完了B之后就一直再啃D题, 暴力判断啊啊啊啊, 各种判断。
首先判断行不行, 我是看把多的按照k个分分的组能不能用少的隔开。
之后循环输出, B还是G, 看单租里面超过k个没有, 少的剩下的能不能把多的剩下的分组, 能的话就输出少的, 不能的话结束这一组的循环, 还要考虑G B 的总个数。 最后附上代码, 表达能力好差啊。。。。
1 #include<cstdio> 2 #include<cstring> 3 #include<cmath> 4 #include<cstdlib> 5 #include<algorithm> 6 using namespace std; 7 int n, g, b, k; 8 bool flag; 9 int contg, contb; 10 int sumg, sumb; 11 int tem; 12 int Max, Min; 13 int cont; 14 int main() 15 { 16 scanf("%d %d %d %d", &n, &k, &g, &b); 17 Max = max(g, b); 18 Min = min(g, b); 19 int x, y; 20 x = g, y = b; 21 cont = (Max + k - 1) / k; 22 if(Min + 1 >= cont) flag = true; 23 if(flag) 24 { 25 while(cont > 0) 26 { 27 if(x > y) 28 { 29 if(g - k >= 0) 30 { 31 for(int i = 1; i <= k; i++) 32 {printf("G");tem++;} 33 g -= k; 34 } 35 else 36 { 37 for(int i = 1; i <= g; i++) 38 {printf("G");tem++;} 39 g = 0; 40 } 41 cont--; 42 int ans = 0; 43 while(b >= cont && ans < k && tem < n) 44 { 45 printf("B"); 46 ans++; 47 b--; 48 tem++; 49 } 50 } 51 else 52 { 53 if(b - k >= 0) 54 { 55 for(int i = 1; i <= k; i++) 56 {printf("B");tem++;} 57 b = b -k; 58 } 59 else 60 { 61 for(int i = 1; i <= b; i++) 62 {printf("B");tem++;} 63 b = 0; 64 } 65 cont--; 66 int ans = 0; 67 while(g >= cont && ans < k && tem < n) 68 { 69 printf("G"); 70 ans++; 71 g--; 72 tem++; 73 } 74 } 75 } 76 printf("\\n"); 77 } 78 else 79 printf("NO\\n"); 80 return 0; 81 }
---------------------------------------------
虽然上分了, 但是没有上青名啊啊啊啊啊, 还差2分 尴尬啊啊啊啊啊啊,看来还要在绿名里徘徊一段时间。
恩。。 至少没掉, 没掉分就是成功的第一步。
希望早日上青名 。
以上是关于cf386(div2)大一狗ACM之路的主要内容,如果未能解决你的问题,请参考以下文章