题目


【题目描述】

lrb 喜欢玩卡牌。他手上现在有n张牌,每张牌的颜色为红绿蓝中的一种。现在他有两种操作。一是可以将两张任意位置的不同色的牌换成一张第三种颜色的牌;二是可以将任意位置的两张相同颜色的牌换成一张该颜色的牌。两个操作后都可以将生成的牌放到任意位置。现在他想知道,最后一张牌可能是什么颜色的。

【输入描述】

第一入一个n,表示卡牌数量。
第二行输入一个由’B’,’G’,’R’组成的长度为n的字符串,分别表示卡牌的颜色为蓝色、绿
色、红色中的一种。
【输出描述】
输出’B’,’G’,’R’中的若干个字母,按字典序输出。代表可能的最后一张牌的颜色。
【样例】

【数据范围】

对于100%的数据,n ≤ 200

题解


显然牌的顺序不会对答案造成影响,故记录每种牌出现的次数。

分几种情况讨论。

1.只有一种牌,答案就是这种牌。

2.有两种牌,这需要分情况讨论。设这两种牌的数量为A,B,剩下一种为C.(为方便讨论,A<=B)

a.A=B=1.显然结果为剩下那种牌。

b.A=1,B>1.这时可以通过操作2转换为a情况,也可以把A,B各一张换成C,这样结果也有可能是A。但显然A的数量最多为1,因此不可能剩下一张B(可以证明)。

c.A,B>1.此时,可以把A,B各一张转化为C,再利用操作2使A,B,C都只剩下1张。显然此时最后可能的牌三种都有可能。

3.有三种牌。这种情况同样可以转化成三种牌各剩一张,因此最后三种都有可能。

这题需要一堆if,编程复杂度较高。下面贴出一种做法,不保证写法最优。

-----------------我是分割线-----------------

 #define FileIO(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout);
#include <stdio.h>
#define R 1
#define G 2
#define B 4
#define check1(a,b,c,A,B,C) if(!a&&b==1) return A|(c>1?B:0);
int n,r,g,b;
char solve(int r,int g,int b) {
if(!r&&!g) return B;
if(!r&&!b) return G;
if(!g&&!b) return R;
check1(r,g,b,R,G,B);
check1(r,b,g,R,B,G);
check1(g,r,b,G,R,B);
check1(g,b,r,G,B,R);
check1(b,r,g,B,R,G);
check1(b,g,r,B,G,R);
return R|G|B;
}
int main() {
FileIO("card");
char c;
scanf("%d",&n);
for(int i=;i<n;++i) {
scanf(" %c",&c);
++(c=='R'?r:c=='G'?g:b);
}
c=solve(r,g,b);
if(c&B) putchar('B');
if(c&G) putchar('G');
if(c&R) putchar('R');
return ;
}

偷看一眼代码

完结撒花+%czhou~~~

最新文章

  1. 【BZOJ-3779】重组病毒 LinkCutTree + 线段树 + DFS序
  2. [变]C#谜题(1-10)表达式篇
  3. 【笔记】js获取当前点击元素的索引
  4. 简单的描述Java中的构造函数,及访问修饰符
  5. 如何找回Oracle中system,sys用户的密码[转]
  6. OAuth 2.0攻击面与案例总结
  7. about java techelogly
  8. openresty入门12 openresty php 整合
  9. oracle连接错误
  10. 随想录(关于ucore)
  11. LoadRunner性能测试指标分析
  12. HTTP协议-----&gt;连接管理
  13. JMeter使用(Linux)
  14. 初识 go 语言
  15. linux alias 命令 查看系统设置的命令别名
  16. MySQL Transaction--Sprint中访问只读从库的设置
  17. VSCODE 使用gitlab 推送代码的简单总结
  18. asm 32 /64
  19. 2018.09.21 codeforces1051D. Bicolorings(线性dp)
  20. 集合之TreeMap

热门文章

  1. Mysql模糊查询like效率,以及更高效的写法
  2. 使用查询分析器和SQLCMD分别登录远程的SQL2005的1434端口
  3. 【题解】Luogu P2766 最长不下降子序列问题
  4. 解决使用eclipse创建maven web项目时报Could not resolve archetype的问题
  5. URL和URI简单辨析
  6. Java基础学习-HelloWorld案例常见问题
  7. 论文笔记:Concept Mask: Large-Scale Segmentation from Semantic Concepts
  8. 点击倒计时60S获取验证码
  9. Pandas 基础(11) - 用 melt 做格式转换
  10. nrf52832-定时器例程