GYM 101086 F.Hey JUDgE(枚举)
2017-03-23 15:38
190 查看
Description
出了七道题,A~E,两个题可以组合成一道题,类似A+A=B这样,但是不能拿一个组合后得到的题和另一道题组合,一道题最多组合一次,问这七道题是否可以凑齐ABCDE
Input
第一行一整数T表示用例组数,每组用例输入一个长度为七的由A~E组成的字符串(1<=T<=330)
Output
如果这七道题通过适当的组合可以凑齐ABCDE则输出YES,否则输出NO
Sample Input
3
EBEABDA
CEDEACA
BDAAEAA
Sample Output
YES
NO
YES
Solution
三种情况:
1.ABCDE都有,不需要组合,YES
2.把两道题合成一道,C(7,2)的枚举即可
3.把四道题合成两道,C(7,2)*C(5,2)枚举即可
Code
出了七道题,A~E,两个题可以组合成一道题,类似A+A=B这样,但是不能拿一个组合后得到的题和另一道题组合,一道题最多组合一次,问这七道题是否可以凑齐ABCDE
Input
第一行一整数T表示用例组数,每组用例输入一个长度为七的由A~E组成的字符串(1<=T<=330)
Output
如果这七道题通过适当的组合可以凑齐ABCDE则输出YES,否则输出NO
Sample Input
3
EBEABDA
CEDEACA
BDAAEAA
Sample Output
YES
NO
YES
Solution
三种情况:
1.ABCDE都有,不需要组合,YES
2.把两道题合成一道,C(7,2)的枚举即可
3.把四道题合成两道,C(7,2)*C(5,2)枚举即可
Code
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<vector> #include<queue> #include<map> #include<set> #include<ctime> using namespace std; typedef long long ll; #define INF 0x3f3f3f3f #define maxn 11 char s[maxn]; int T,num[maxn]; int main() { scanf("%d",&T); while(T--) { memset(num,0,sizeof(num)); scanf("%s",s); int gg=0; for(int i=0;i<7;i++)num[s[i]-'A'+1]++; for(int i=1;i<=5;i++) if(!num[i])gg=1; if(gg) { for(int i=0;i<7;i++) for(int j=i+1;j<7;j++) { int a=s[i]-'A'+1,b=s[j]-'A'+1,flag=1; num[a]--,num[b]--,num[a+b]++; for(int k=1;k<=5;k++) if(!num[k])flag=0; if(flag)gg=0; num[a]++,num[b]++,num[a+b]--; } if(gg) { for(int i=0;i<7;i++) for(int j=i+1;j<7;j++) for(int ii=0;ii<7;ii++) for(int jj=ii+1;jj<7;jj++) if(i!=ii&&i!=jj&&j!=ii&&j!=jj) { int a=s[i]-'A'+1,b=s[j]-'A'+1,c=s[ii]-'A'+1,d=s[jj]-'A'+1,flag=1; num[a]--,num[b]--,num[a+b]++; num[c]--,num[d]--,num[c+d]++; for(int k=1;k<=5;k++) if(!num[k])flag=0; if(flag)gg=0; num[a]++,num[b]++,num[a+b]--; num[c]++,num[d]++,num[c+d]--; } } } printf("%s\n",gg?"NO":"YES"); } return 0; }
相关文章推荐
- GYM Amman 17 J. Spilt the String 模拟,枚举
- Gym 101020H Weekend 【枚举最短路 】
- 【枚举】【并查集】Gym - 101243F - Vitamins
- GYM 101086 K.Betrayed(树形DP+概率DP)
- Gym 100712G Heavy Coins(二进制枚举子集)
- GYM 101128 H.Sheldon Numbers(枚举)
- GYM 101086 L.Chance(水~)
- 【枚举】【字符串哈希】Gym - 101164K - Cutting
- 【枚举】【DFS序】Gym - 101617G - Rainbow Roads
- GYM 100883 J.palprime(枚举)
- GYM 101086 M.ACPC Headquarters : AASTMT (Stairway to Heaven)(map)
- Gym 100712I Bahosain and Digits(枚举)
- Gym 100338I TV show (dfs枚举)
- GYM 100182 G.Pool Table(枚举)
- Gym 101308D Database 枚举
- Gym 101086 M ACPC Headquarters : AASTMT (Stairway to Heaven)
- GYM 100030 L.Make Your Donation Now(枚举)
- GYM 101086 A.My Friend of Misery(水~)
- Gym - 100712G Heavy Coins(二进制枚举)
- GYM 101086 B.Brother Louie(dfs)