8VC Venture Cup 2016 - Elimination Round B. Cards (隐式图DFS)
来源:互联网 发布:淘宝xboxone手柄会假吗 编辑:程序博客网 时间:2024/04/30 01:51
Catherine has a deck of n cards, each of which is either red, green, or blue. As long as there are at least two cards left, she can do one of two actions:
- take any two (not necessarily adjacent) cards with different colors and exchange them for a new card of the third color;
- take any two (not necessarily adjacent) cards with the same color and exchange them for a new card with that color.
She repeats this process until there is only one card left. What are the possible colors for the final card?
The first line of the input contains a single integer n (1 ≤ n ≤ 200) — the total number of cards.
The next line contains a string s of lengthn — the colors of the cards.s contains only the characters 'B', 'G', and 'R', representing blue, green, and red, respectively.
Print a single string of up to three characters — the possible colors of the final card (using the same symbols as the input) in alphabetical order.
2RB
G
3GRG
BR
5BBBBB
B
In the first sample, Catherine has one red card and one blue card, which she must exchange for a green card.
In the second sample, Catherine has two green cards and one red card. She has two options: she can exchange the two green cards for a green card, then exchange the new green card and the red card for a blue card. Alternatively, she can exchange a green and a red card for a blue card, then exchange the blue card and remaining green card for a red card.
In the third sample, Catherine only has blue cards, so she can only exchange them for more blue cards.
题意:给你一个串,里面有三种颜色G、B、R,选择两个合并,合并规则:
1:G+G=G,相同合并出来一个
2:G+R=B,不同的合并,出来第三个
思路:直接对数量构建隐式图进行DFS就好了,枚举合成的情况,注意中间标记就好了。
ac代码:
#include<stdio.h>#include<math.h>#include<string.h>#include<stack>#include<set>#include<queue>#include<vector>#define MAXN 1010000#define LL long long#define ll __int64#include<iostream>#include<algorithm>#define INF 0xfffffff#define mem(x) memset(x,0,sizeof(x))#define PI acos(-1)using namespace std;LL gcd(LL a,LL b){return b?gcd(b,a%b):a;}LL lcm(LL a,LL b){return a/gcd(a,b)*b;}LL powmod(LL a,LL b,LL MOD){LL ans=1;while(b){if(b%2)ans=ans*a%MOD;a=a*a%MOD;b/=2;}return ans;}//headint flag1,flag2,flag3;int v[222][222][222];void dfs(int rr,int bb,int gg){if(rr==0&&bb==0&&gg==1){if(flag2==0)flag2=1;return;}else if(rr==0&&gg==0&&bb==1){if(flag1==0)flag1=1;return;}else if(rr==1&&gg==0&&bb==0){if(flag3==0)flag3=1;return;}if(rr>0&&bb>0&&!v[rr-1][bb-1][gg+1]){v[rr-1][bb-1][gg+1]=1;dfs(rr-1,bb-1,gg+1);//v[rr-1][bb-1][gg+1]=0;}if(rr>0&&gg>0&&!v[rr-1][bb+1][gg-1]){v[rr-1][bb+1][gg-1]=1;dfs(rr-1,bb+1,gg-1);//v[rr-1][bb+1][gg-1]=0;}if(bb>0&&gg>0&&!v[rr+1][bb-1][gg-1]){v[rr+1][bb-1][gg-1]=1;dfs(rr+1,bb-1,gg-1);//v[rr+1][bb-1][gg-1]=0;}if(rr>1&&!v[rr-1][bb][gg]){v[rr-1][bb][gg]=1;dfs(rr-1,bb,gg);//v[rr-1][bb][gg]=0;}if(bb>1&&!v[rr][bb-1][gg]){v[rr][bb-1][gg]=1;dfs(rr,bb-1,gg);//v[rr][bb-1][gg]=0;}if(gg>1&&!v[rr][bb][gg-1]){v[rr][bb][gg-1]=1;dfs(rr,bb,gg-1);//v[rr][bb][gg-1]=0;}}int main(){int len,i;char s[222];while(scanf("%d",&len)!=EOF){mem(v); int r=0,b=0,g=0;scanf("%s",s);for(i=0;i<len;i++){if(s[i]=='R')r++;else if(s[i]=='B')b++;elseg++;}flag1=0;flag2=0;flag3=0;dfs(r,b,g);if(flag1)printf("B");if(flag2)printf("G");if(flag3)printf("R");printf("\n");}return 0;}
- 8VC Venture Cup 2016 - Elimination Round B. Cards (隐式图DFS)
- 8VC Venture Cup 2016 - Elimination Round-B. Cards(暴力)
- 8VC Venture Cup 2016 - Elimination Round B. Cards(分类讨论)
- 8VC Venture Cup 2016 - Elimination RoundB. Cards
- 8VC Venture Cup 2017 - Elimination Round(A+B)
- 8VC Venture Cup 2017 - Elimination Round
- 8VC Venture Cup 2016 - Elimination Round题解
- 8VC Venture Cup 2016 - Elimination Round A. Robot Sequence
- Codeforces 8VC Venture Cup 2016 - Elimination Round解题报告
- 8VC Venture Cup 2016 - Elimination Round 总结
- 8VC Venture Cup 2016 - Elimination Round C - Block Towers
- Codeforces 8VC Venture Cup 2016 - Elimination Round
- 8VC Venture Cup 2016 - Elimination Round总结
- 8VC Venture Cup 2016 - Elimination Round C. Block Towers
- 8VC Venture Cup 2017 - Elimination Round (先更A-B-C题)
- 8VC Venture Cup 2016 - Elimination Round (626A,626B,626C(二分),626D(概率))
- 8VC Venture Cup 2016 -A - Robot Sequence/B - Cards
- 8VC Venture Cup 2016 - Elimination Round C. Block Towers (二分)
- 8VC Venture Cup 2016 - Elimination Round A. Robot Sequence
- android pull 解析xml文件
- Python语言实践分析 -- 默认参数
- 【JS学习笔记】内置对象
- Visual Studio 2008 可扩展性开发(六):操作Solution Explorer
- 8VC Venture Cup 2016 - Elimination Round B. Cards (隐式图DFS)
- struts2拦截器配置详解
- p277 第十章 数组和指针
- Spark源码分析之一:Job提交运行总流程概述
- Andriod 判断软键盘弹出并隐藏详解
- SQL Server专家的10个秘诀(翻译加注解)
- 新年第一帖——耍一耍Android 摇一摇功能
- HomeKit 开发指南(中文版)
- android中checkbox文字和复选框的间距设置问题