2017-9-3 校内模拟T1卡片card

题意:有三种字母,可以用两个不同的换一个第三种字母,两个相同的换一个同种字母(即消去一个),问最后剩下的字母。

第一题显然是if题,总体来说只有三种情况:

1.有三种不同的>>输出“BGR”

2.有两种不同的:{

    (1)两种都有超过一个>>情况1;

    (2)一种只有一个>>输出这种和未出现的字母

    (3)两种都只有一个>>输出未出现的字母
  }

   3.只有一种字母>>输出这个字母

代码(极丑):

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 using namespace std;
 5 int n;int o[4];int ans=6;
 6 void putout(int x){
 7     if(x==1) cout<<‘B‘;
 8     if(x==2) cout<<‘G‘;
 9     if(x==3) cout<<‘R‘;
10 }
11 bool cmp(char a,char b){
12     return a<b;
13 }
14 int main(){
15     freopen("card.in","r",stdin);
16     freopen("card.out","w",stdout);
17     scanf("%d",&n);
18     char ll;int v=0;
19     getchar();
20     for(int i=0;i<n;i++){
21         ll=getchar();
22         if(ll==‘B‘) o[1]++;
23         if(ll==‘G‘) o[2]++;
24         if(ll==‘R‘) o[3]++;
25     }
26     getchar();
27     if(o[1]&&o[2]&&o[3]){
28         printf("BGR\n");
29         return 0;
30     }
31     for(int i=1;i<=3;i++){
32         if(!o[i]&&v!=0){
33             ans-=v+i;break;
34         }
35         else if(!o[i]) v=i;
36     }
37     if(ans!=6){
38         putout(ans);
39         return 0;
40     }
41     int a,b;
42     for(int i=1;i<=3;i++)
43         if(i!=v){
44             a=i,b=6-i-v;
45             break;
46         }
47     if(a>b) swap(a,b);
48     if((o[a]==1||o[b]==1)&&(o[a]!=1||o[b]!=1)){
49         int y=(o[a]==1?a:b);
50         if(y>6-a-b){
51             putout(6-a-b);
52             putout(y);
53         }
54         else{
55             putout(y);
56             putout(6-a-b);
57         }
58         cout<<endl;
59         return 0;
60     }
61     if(o[a]>1&&o[b]>1)
62         printf("BGR\n");
63     else
64         putout(6-a-b);
65     return 0;
66 }

_________________________________

时间不早了,其它过两天再贴~

时间: 2024-08-25 11:09:38

2017-9-3 校内模拟T1卡片card的相关文章

2017.6.11 校内模拟赛

题面及数据及std(有本人的也有原来的) :2017.6.11 校内模拟赛 T1 自己在纸上模拟一下后就会发现 可以用栈来搞一搞事情 受了上次zsq 讲的双栈排序的启发.. 具体就是将原盘子大小copy一下排个序 用两个指针维护两个数组(原数据 和 排序后的数据), 即分为1数据和2数组 将小于1指针指向的数据的2数组中的数据全部压入栈中 后进行消除, 将栈栈顶元素与当前1数组中的1指针指向的元素进行比较 相同则消除 后重复过程 直至指针超过N 后判断一下是否两个指针都超过了N... #incl

2017-9-3模拟赛T1 卡片(card)

题目 [题目描述] lrb 喜欢玩卡牌.他手上现在有n张牌,每张牌的颜色为红绿蓝中的一种.现在他有两种操作.一是可以将两张任意位置的不同色的牌换成一张第三种颜色的牌:二是可以将任意位置的两张相同颜色的牌换成一张该颜色的牌.两个操作后都可以将生成的牌放到任意位置.现在他想知道,最后一张牌可能是什么颜色的. [输入描述] 第一入一个n,表示卡牌数量.第二行输入一个由'B','G','R'组成的长度为n的字符串,分别表示卡牌的颜色为蓝色.绿色.红色中的一种.[输出描述]输出'B','G','R'中的若

2017.9.2 校内模拟赛

中规中矩的一套题. 然而辣鸡的我日常跪 卡SPFA是要哪样啊...再也不写SPFA了 100 + 0 + 70 = 170 "与" (and.pas/.c/.cpp) 时间限制:1s:空间限制64MB 题目描述: 给你一个长度为n的序列A,请你求出一对Ai,Aj(1<=i<j<=n)使Ai"与"Aj最大. Ps:"与"表示位运算and,在c++中表示为&. 输入描述: 第一行为n.接下来n行,一行一个数字表示Ai. 输出

20181229模拟 T1 palindrome

20181229模拟 T1 palindrome 题意 : \(S\)是字符串\(s\)的子串可重集,求\(\sum\limits_{x\in S}\sum\limits_{y\in S}(|x|+|y|)\times [xy\ is \ palidrome]mod\ 2013265921\). 分析: \(2013265921\)的原根是\(31\),所以这道题我使用后缀自动机+回文树来解决. 注意到一个由两个字符串所组成的回文串\(xy\),不妨设\(|x|<|y|\),\(y\)显然是由一

校内模拟赛 Zbq&#39;s Music Challenge

Zbq's Music Challenge 题意: 一个长度为n的序列,每个位置可能是1或者0,1的概率是$p_i$.对于一个序列$S$,它的得分是 $$BasicScore=A\times \sum_{i=1}^{n}{S_i} \tag{1}$$ $$ combo(i)=\left\{ \begin{aligned} &S_i & &i=1 \\ &combo(i-1)+1 & &i\neq 1 ~\mathrm{and}~ S_i=1 \\ &

2017.9.17校内noip模拟赛解题报告

预计分数:100+60+60=220 实际分数:100+60+40=200 除了暴力什么都不会的我..... T1 2017.9.17巧克力棒(chocolate) 巧克力棒(chocolate)Time Limit:1000ms Memory Limit:64MB题目描述LYK 找到了一根巧克力棒,但是这根巧克力棒太长了,LYK 无法一口吞进去.具体地,这根巧克力棒长为 n,它想将这根巧克力棒折成 n 段长为 1 的巧克力棒,然后慢慢享用.它打算每次将一根长为 k 的巧克力棒折成两段长为 a

校内模拟赛T1大美江湖

这就是一个模拟题,注意1234分别对应左右上下横坐标和纵坐标的判断就好了 题解: 需要注意的是,向上取整ceil函数是对于一个double值返回一个double值,也就是说在ceil里面的类型一定要是double,否则会炸 代码: #include<cstdio> #include<iostream> #include<cstdlib> #include<cmath> #include<cstring> #include<string>

9.10 AHSOFNU校内模拟

9.10完整的在AHSOFNU考了一场模拟赛 以下记录了本次考试的题目(由于mhm想当然的以为是跳石子而没有sort就打挂惹T-T) 本次考试被出题人判定为普及-(???) //以下题目中有贴std代码,等A后修正为自己代码 ----------------------分割线-------------------------------------- T1: CCT 最近学校又发了n本五三题霸,BBS看到后十分高兴.但是,当他把五三拿到手后才发现,他已经刷过这些书了!他又认真地看了一会儿,发现新

2017.09.03校内训练

T1:卡片 题解:这很明显,是一道选择题!!! 我们考虑每一种情况:只有一种卡片时,很显然最后剩下的只能是这一种:有三种卡片时,可以变成各只有一张,无论选取哪两张,都可以变成剩下的那一张,因此每一种都可以剩下:有两种的情况:若这两种都有两张以上,便可以各取一张合成没有的那一种,最后结果请参见上一条:若有一种只有一张,另一种有多张,则每一次的转化操作都要使用到较多的那种一张,不论如何都不可能合成较多张的那一种.因此结果是除了多于一张的那一种以外的其它两种:若这两种各只有一张,则结果必定是没有的那一