HDU 4930
来源:互联网 发布:featutelayer json 编辑:程序博客网 时间:2024/06/01 07:50
直接模拟,先看能不能一手出完,不能一手出完则先炸弹,然后3带2,3带1,3,一对,单个出
#include <cstdio>#include <cstring>const int maxn = 10007;char str_1[maxn], str_2[maxn];int num_1[30], num_2[30];int len_1, len_2;int getPoint(char c) { if (c >= '3' && c <= '9') { return c - '0'; } if (c == 'T') { return 10; } if (c == 'J') { return 11; } if (c == 'Q') { return 12; } if (c == 'K') { return 13; } if (c == 'A') { return 14; } if (c == '2') { return 15; } if (c == 'X') { return 16; } if (c == 'Y') { return 17; }}int getNuke(int *card) { if (card[17] && card[16]) { return 1; } return 0;}int findNum(int *card, int cnt_num) { for (int i = 17; i >= 0; i--) { if (card[i] == cnt_num) { return i; } } return -1;}bool winFirst() { if (len_1 == 1) { return 1; } if (len_1 == 2) { int cnt_card = findNum(num_1, 2); if (cnt_card != -1) { return 1; } } if (len_1 == 3) { int cnt_card = findNum(num_1, 3); if (cnt_card != -1) { return 1; } } if (len_1 == 4) { int b = findNum(num_1, 3); int a = findNum(num_1, 1); int c = findNum(num_1, 4); if (a != -1 && b != -1) { return 1; } if (c != -1) { return 1; } } if (len_1 == 5) { int a = findNum(num_1, 3); int b = findNum(num_1, 2); if (a != -1 && b != -1) { return 1; } } if (len_1 == 6) { int a = findNum(num_1, 4); if (a != -1) { return 1; } } return 0;}int checkBomb() { int bomb = findNum(num_1, 4); if (bomb != -1) { int a = findNum(num_2, 4); if (a > bomb) { return 0; } return 1; } return 0;}int checkTrioPair() { int trio = findNum(num_1, 3); if (trio != -1) { int a = -1; for (int i = 17; i >= 0; i--) { if (i != trio && num_1[i] >= 2) { a = i; break; } } if (a != -1) { int b = findNum(num_2, 4); if (b != -1) { return 0; } b = findNum(num_2, 3); if (b > trio) { for (int i = 17; i >= 0; i--) { if (i != b && num_2[i] >= 2) { return 0; } } return 1; } return 1; } return 0; } return 0;}int checkTrioSolo() { int trio = findNum(num_1, 3); if (trio != -1) { int a = -1; for (int i = 0; i <= 17; i++) { if (i != trio && num_1[i] >= 1) { a = i; break; } } if (a != -1) { int b = findNum(num_2, 4); if (b != -1) { return 0; } b = findNum(num_2, 3); if (b > trio) { for (int i = 0; i <= 17; i++) { if (i != b && num_2[i] >= 1) { return 0; } } return 1; } return 1; } return 0; } return 0;}int checkTrio() { int trio = findNum(num_1, 3); if (trio != -1) { int b = findNum(num_2, 4); if (b != -1) { return 0; } b = findNum(num_2, 3); if (b > trio) { return 0; } return 1; } return 0;}int checkPair() { int a = -1; int b = -1; b = findNum(num_2, 4); if (b != -1) { return 0; } for (int i = 17; i >= 0; i--) { if (num_1[i] >= 2) { a = i; break; } } for (int i = 17; i >= 0; i--) { if (num_2[i] >= 2) { b = i; break; } } if (a != -1 && a >= b) { return 1; } return 0;}int checkSolo() { int a = - 1; int b = -1; b = findNum(num_2, 4); if (b != -1) { return 0; } for (int i = 17; i >= 0; i--) { if (num_1[i] >= 1) { a = i; break; } } for (int i = 17; i >= 0; i--) { if (num_2[i] >= 1) { b = i; break; } } if (a != -1 && a >= b) { return 1; } return 0;}int main() {// freopen("in.txt", "r", stdin); int test_case; scanf("%d", &test_case); while (test_case--) { memset(num_1, 0, sizeof(num_1)); memset(num_2, 0, sizeof(num_2)); scanf("%s%s", str_1, str_2); len_1 = strlen(str_1); len_2 = strlen(str_2); for (int i = 0; i < len_1; i++) { int point = getPoint(str_1[i]); num_1[point]++; } for (int i = 0; i < len_2; i++) { int point = getPoint(str_2[i]); num_2[point]++; } if (winFirst()) { printf("Yes\n"); continue; } if (getNuke(num_1)) { printf("Yes\n"); continue; } if (getNuke(num_2)) { printf("No\n"); continue; } if (checkBomb()) { printf("Yes\n"); continue; } if (checkTrioPair()) { printf("Yes\n"); continue; } if (checkTrioSolo()) { printf("Yes\n"); continue; } if (checkTrio()) { printf("Yes\n"); continue; } if (checkPair()) { printf("Yes\n"); continue; } if (checkSolo()) { printf("Yes\n"); continue; } printf("No\n"); } return 0;}
0 0
- HDU 4930
- hdu 4930 模拟
- HDU 4930 模拟题
- 2014多校联合六(HDU 4923 HDU 4925 HDU 4927 HDU 4930)
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- HDU 4923
- 通过log4j保存异常信息
- JPA 注解以及pojo转为表 2
- unity3d之帧动画
- 创建SSL证书,配置IPython notebook服务器
- HDU 4930
- 第二届360杯全国大学生信息安全技术大赛部分解题思路(加密解密题)
- POJ 3356 AGTC
- GGDB常用代码
- URL的应用-多线程下载
- 7.22通过指向对象的指针访问对象中的成员
- 【UNIX——01】APUE第一章
- 安装plymouth
- XML学习