• 201793模拟赛T1 卡片(card)


     题目


     【题目描述】

    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,编程复杂度较高。下面贴出一种做法,不保证写法最优。

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

     1 #define FileIO(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout);
     2 #include <stdio.h>
     3 #define R 1
     4 #define G 2
     5 #define B 4
     6 #define check1(a,b,c,A,B,C) if(!a&&b==1) return A|(c>1?B:0);
     7 int n,r,g,b;
     8 char solve(int r,int g,int b) {
     9     if(!r&&!g) return B;
    10     if(!r&&!b) return G;
    11     if(!g&&!b) return R;
    12     check1(r,g,b,R,G,B);
    13     check1(r,b,g,R,B,G);
    14     check1(g,r,b,G,R,B);
    15     check1(g,b,r,G,B,R);
    16     check1(b,r,g,B,R,G);
    17     check1(b,g,r,B,G,R);
    18     return R|G|B;
    19 }
    20 int main() {
    21     FileIO("card");
    22     char c;
    23     scanf("%d",&n);
    24     for(int i=0;i<n;++i) {
    25         scanf(" %c",&c);
    26         ++(c=='R'?r:c=='G'?g:b);
    27     }
    28     c=solve(r,g,b);
    29     if(c&B) putchar('B');
    30     if(c&G) putchar('G');
    31     if(c&R) putchar('R');
    32     return 0;
    33 }
    偷看一眼代码

    完结撒花+%czhou~~~

  • 相关阅读:
    C# 多态类型
    字符集(Character set)
    CSS之backgroundposition 百分数形式
    javascript this对象 作用域链scope chain
    地图 查经纬度 算距离
    JavaScript 对象封装(完美版)
    iTextSharp 使用详解(转)
    社交网站 分享 +button
    COCOS2DX学习笔记(一) windows下cocos2dx的环境配置
    【首创】完美解决scrollview与menu的兼容问题
  • 原文地址:https://www.cnblogs.com/hotwords/p/7475764.html
Copyright © 2020-2023  润新知