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

Problem Description
Adam and Eve play a card game using a regular deck of 52 cards. The rules are simple. The players sit on opposite sides of a table, facing each other. Each player gets k cards from the deck and, after looking at them, places the cards face down in a row on the table. Adam’s cards are numbered from 1 to k from his left, and Eve’s cards are numbered 1 to k from her right (so Eve’s i:th card is opposite Adam’s i:th card). The cards are turned face up, and points are awarded as follows (for each i ∈ {1, . . . , k}):

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.

 
Input
There will be several test cases. The first line of input will contain a single positive integer N giving the number of test cases. After that line follow the test cases.

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

 
Output
For each test case output a single line with the number of points Eve gets if she picks the optimal way to arrange her cards on the table.

 
Sample Input
3
 
1
JD
JH
 
2
5D TC
4C 5H
 
3
2H 3H 4H
2D 3D 4D 
 
Sample Output
1
1
2
 
Source
题意:两个人一次出一张牌,每一次都会有一个人赢,规则告诉你,再告诉你两个人总共k张牌的每一张牌是多少,问其中一个人最多可以赢几次。
 
so,匹配
#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的更多相关文章

  1. hdu----(1528)Card Game Cheater(最大匹配/贪心)

    Card Game Cheater Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  2. Card Game Cheater(贪心+二分匹配)

    Card Game Cheater Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  3. (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 ...

  4. (简单匹配)Card Game Cheater -- hdu --1528

    http://acm.hdu.edu.cn/showproblem.php?pid=1528 Card Game Cheater Time Limit: 2000/1000 MS (Java/Othe ...

  5. HDOJ 1528 Card Game Cheater

    版权声明:来自: 码代码的猿猿的AC之路 http://blog.csdn.net/ck_boss https://blog.csdn.net/u012797220/article/details/3 ...

  6. hdu 1528 Card Game Cheater (二分匹配)

    Card Game Cheater Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  7. hdu 1528 Card Game Cheater ( 二分图匹配 )

    题目:点击打开链接 题意:两个人纸牌游戏,牌大的人得分.牌大:2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 < T < J < ...

  8. POJ 2062 HDU 1528 ZOJ 2223 Card Game Cheater

    水题,感觉和田忌赛马差不多 #include<cstdio> #include<cstring> #include<cmath> #include<algor ...

  9. Card Game Cheater HDU1528

    二分图最大匹配问题 扑克题还是用map比较方便 #include<bits/stdc++.h> using namespace std; #define MAXI 52 ]; ]; int ...

随机推荐

  1. Mybatis 1.原理流程图

    仅用来做个人笔记记录. 总流程: 根据配置文件(全局配置文件和sql映射文件)初始化configuration对象. 创建一个defaultSqlSession对象,包含Configuration及E ...

  2. Head First PHP&MySQl第四章代码

    addemail.php <!DOCTYPE html> <html lang="cn" dir="ltr"> <head> ...

  3. Linux服务器应急事件溯源报告

    Linux服务器应急事件溯源报告 小博博 · 2016/02/18 17:43 Author:Inn0team 0x00 目录 关于目标环境的中间进度检测报告 一:情况概述 二:取证情况 2.1 目标 ...

  4. CTP报单参数详解

    交易所代码 产品类型 业务类型 价格类型 指令类型 价格类型 OrderPriceType 有效期类型 TimeCondition 成交量类型 VolumeCondition 备注 CZCE 郑商所 ...

  5. 关于React中props与state的一知半解

    props props英文翻译是道具的意思,我个人理解为参数,如果我们将react组件看作是一个函数,那么props便是函数接收外部数据所使用的参数.props具有以下特性: 1.不可变(只读性) p ...

  6. linux ssh连接超时断连设置

    以下均针对redhat6.5系统进行说明. 一.设置ssh超时断连 使用root用户,编辑/etc/profile文件,在 HOSTNAME='/bin/hostname' HISTIZE=30 后增 ...

  7. 爬虫获取网页数据,报错:UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start by

    https://blog.csdn.net/hj_xy_0705/article/details/85011072

  8. MongoDB入门_shell基本操作

    使用shell客户端连接mongoDB数据库 [root@localhost mongodb_simple]# ./bin/mongo /admin mongoDB的简单基本操作 1. mongoDB ...

  9. 007-zabbix Server 4.0 监控TCP的12种状态

    大家对TCP三次握手比较熟悉了,都知道当发生DOSS攻击时,客户端发送SYN给服务端后,服务端响应SYN+ACK,此时客户端就不回应服务端ACK啦(如果正常建立三次握手客户端会回应ACK,表示三次握手 ...

  10. 转(HBuilder 打包流程)

    1.运行HBuilder---百度搜索HBuilder,官网下载安装包,解压,运行HBuilder.exe.注册账号,并登陆 2.新建app---在左边右键,选择新建APP,或者,点击中间的新建app ...