Card Game Cheater
Card Game Cheater
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 1576 Accepted Submission(s): 830
If Adam’s i:th card beats Eve’s i:th card, then Adam gets one point.
If Eve’s i:th card beats Adam’s i:th card, then Eve gets one point.
A card with higher value always beats a card with a lower value: a three beats a two, a four beats a three and a two, etc. An ace beats every card except (possibly) another ace.
If the two i:th cards have the same value, then the suit determines who wins: hearts beats all other suits, spades beats all suits except hearts, diamond beats only clubs, and clubs does not beat any suit.
For example, the ten of spades beats the ten of diamonds but not the Jack of clubs.
This ought to be a game of chance, but lately Eve is winning most of the time, and the reason is that she has started to use marked cards. In other words, she knows which cards Adam has on the table before he turns them face up. Using this information she orders her own cards so that she gets as many points as possible.
Your task is to, given Adam’s and Eve’s cards, determine how many points Eve will get if she plays optimally.
Each test case starts with a line with a single positive integer k <= 26 which is the number of cards each player gets. The next line describes the k cards Adam has placed on the table, left to right. The next line describes the k cards Eve has (but she has not yet placed them on the table). A card is described by two characters, the first one being its value (2, 3, 4, 5, 6, 7, 8 ,9, T, J, Q, K, or A), and the second one being its suit (C, D, S, or H). Cards are separated by white spaces. So if Adam’s cards are the ten of clubs, the two of hearts, and the Jack of diamonds, that could be described by the line
TC 2H JD
#include<iostream>
#include<cstdio>
#include<cstring> using namespace std; char x[100][3], y[100][3];
int n, maps[100][100], used[100], vis[100]; int slove(int m, int n)
{
int a, b; if(x[m][0] == 'T')
a = 10;
else if(x[m][0] == 'J')
a = 11;
else if(x[m][0] == 'Q')
a = 12;
else if(x[m][0] == 'K')
a = 13;
else if(x[m][0] == 'A')
a = 14;
else
a = x[m][0] - '0';
if(y[n][0] == 'T')
b = 10;
else if(y[n][0] == 'J')
b = 11;
else if(y[n][0] == 'Q')
b = 12;
else if(y[n][0] == 'K')
b = 13;
else if(y[n][0] == 'A')
b = 14;
else
b = y[n][0] - '0';
if(a > b)
return 1;
if(a == b)
{
if(x[m][1] == 'H')
return 1;
if(x[m][1] == 'S' && (y[n][1] == 'D' || y[n][1] == 'C'))
return 1;
if(x[m][1] == 'D' && y[n][1] == 'C')
return 1;
}
return 0;
} int found(int u)
{
for(int i = 0; i < n; i++)
{
if(maps[u][i] && !vis[i])
{
vis[i] = 1;
if(!used[i] || found(used[i]))
{
used[i] = u;
return true;
}
}
}
return false;
} void init()
{
memset(maps, 0, sizeof(maps));
memset(vis, 0, sizeof(vis));
memset(used, 0, sizeof(used));
memset(x, 0, sizeof(x));
memset(y, 0, sizeof(y));
} int main()
{
int t; scanf("%d", &t);
while(t--)
{
int cou = 0;
scanf("%d", &n); init(); for(int i = 0; i < n; i++)
scanf("%s", x[i]);
for(int i = 30; i < n+30; i++)
scanf("%s", y[i]); for(int i = 0; i < n; i++)
{
for(int j = 30; j < n+30; j++)
{
if(slove(i, j))
maps[i][j] = 1;
else
maps[j][i] = 1;
}
} for(int i = 30; i < n+30; i++)
{
memset(vis, 0, sizeof(vis));
if(found(i))
{
cou++;
}
}
printf("%d\n", cou);
}
return 0;
}
Card Game Cheater的更多相关文章
- hdu----(1528)Card Game Cheater(最大匹配/贪心)
Card Game Cheater Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- Card Game Cheater(贪心+二分匹配)
Card Game Cheater Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- (hdu step 6.3.5)Card Game Cheater(匹配的最大数:a与b打牌,问b赢a多少次)
称号: Card Game Cheater Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- (简单匹配)Card Game Cheater -- hdu --1528
http://acm.hdu.edu.cn/showproblem.php?pid=1528 Card Game Cheater Time Limit: 2000/1000 MS (Java/Othe ...
- HDOJ 1528 Card Game Cheater
版权声明:来自: 码代码的猿猿的AC之路 http://blog.csdn.net/ck_boss https://blog.csdn.net/u012797220/article/details/3 ...
- hdu 1528 Card Game Cheater (二分匹配)
Card Game Cheater Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- hdu 1528 Card Game Cheater ( 二分图匹配 )
题目:点击打开链接 题意:两个人纸牌游戏,牌大的人得分.牌大:2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 < T < J < ...
- POJ 2062 HDU 1528 ZOJ 2223 Card Game Cheater
水题,感觉和田忌赛马差不多 #include<cstdio> #include<cstring> #include<cmath> #include<algor ...
- Card Game Cheater HDU1528
二分图最大匹配问题 扑克题还是用map比较方便 #include<bits/stdc++.h> using namespace std; #define MAXI 52 ]; ]; int ...
随机推荐
- IOMETER的简单使用
1. 网上下载文件: 一般至少包含两个: 2. 使用IOmeter 进行 功能测试. 注意选择 测试需要的盘 注意 选择的磁盘 会被充满. 会产生一个特别大的文件 3. 选择测试对象 4. 可以查看实 ...
- Luogu P3953 [NOIP2017]逛公园
题目 首先我们跑出从\(1\)出发的最短路\(d1\)和反图上从\(n\)出发的最短路\(dn\). 然后我们处理出长度不超过\(d1_n+k\)的最短路边集,给它拓扑排序. 如果存在环,那么这个环一 ...
- python之入门
第一章 入门 1.1 变量-输出 a = 1 # 声明变量 a # 变量的名字 = # 赋值 1 # 值 变量定义的规则: 1.变量由数字,字母,下划线组成 2.不能以数字开头 3.不能使用pytho ...
- python中的生成器、迭代器、闭包、装饰器
迭代器 迭代是访问集合元素的一种方式.迭代器是一个可以记住遍历的位置的对象.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退. 可迭代对象 以直接作用于 for ...
- 猎豹wifi的坑
最近想看看外面的风景,装了Cisco的VPN,但总是连不了外网,国内的网站连接速度比较慢. 运维人员看了很长时间都没发现原因,route print查看之后,说: 在连接外网之前,多走了层路由... ...
- zookeeper 实战操作
一:监听服务端zookeeper节点数据改变 import java.io.IOException; import java.util.concurrent.CountDownLatch; impor ...
- 使用Koa.js离不开这十个中间件
随着ES6的普及,async/await的语法受到更多JS开发者的青睐,Koa.js作为比较早支持使用该语法的Node框架越来越受到大家的喜爱,虽然Koa.js本身支持的功能很有限,但官方和社区提供了 ...
- uoj218_火车管理
题意 \(n\)个位置,每个位置一个栈,三种操作,询问区间栈顶的和,区间入栈某个数,单点出栈某个数. 分析 用一个线段树来维护栈顶的和,区间(单点)更新和区间询问. 用一个主席树来维护每个位置最新一次 ...
- 看电视剧<潜伏>有感
前几天看了老电视剧-潜伏,有一些感慨. 一,立场和真相都不重要,形式才是最重要的. 二.历史在不断的轮回中. 好汉历经千辛万苦杀掉了为害一方的恶霸,好汉的威望达到了顶峰,自然的成了村庄的守护者和掌控者 ...
- ConditionalOnProperty的使用
时间 2018-02-23 标签 ConditionalOnPropert SpringBoot 栏目 Spring 原文 http://blog.csdn.net/u010002184/art ...