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 ...
随机推荐
- [转帖]教你如何修改运行中的docker容器的端口映射
教你如何修改运行中的docker容器的端口映射 在docker run创建并运行容器的时候,可以通过-p指定端口映射规则.但是,我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改.当dock ...
- Spring整合jms消息
整个项目目录结构如下: JmsSpringContext.java package com.wulj.jms.internal.activisor; import org.slf4j.Logger; ...
- springBoot2.0配置profile
1. 使用yaml来配置,直接配置application.yml文件 server: port: 8888 spring: profiles: active: dev # 激活生产环境 --- # 测 ...
- C++学习——在C文件中调用C++文件中的函数
1.CPP文件中的内容 #include "mytest.h" #include <iostream> using namespace std; int add(con ...
- bootstrap modal 闪退的办法
调用:
- MySQL基础入门之常用命令介绍
mysql命令介绍 mysql 是数据库管理命令 通过mysql --help来查看相关参数及使用说明 mysql --help #mysql数据库管理命令 Usage: ...
- C语言_扫雷代码
本文详细讲述了基于C语言实现的扫雷游戏代码,代码中备有比较详细的注释,便于读者阅读和理解.希望对学习游戏开发的朋友能有一点借鉴价值. 完整的实例代码如下: ? 1 2 3 4 5 6 7 8 9 10 ...
- MySQL安装+Navicat_Premium(安装+破解)+Navicat_Premium中MySQL的localhost不能正常连接+不能连接Docker启动容器中的MySQL
MySQL安装 安装MySQL 我这里安装的是 MySQL 8.0 Command Line Client 下载+安装 详情见 https://www.cnblogs.com/taopanfeng/p ...
- docker快速入门01——docker安装与简单应用
1.docker简介 Docker 是一个开源的应用容器引擎,Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化 ...
- sed 删除用法
sed ‘1,4d’ dataf1 #把第一行到第四行删除,并且显示剩下的内容 sed ‘/La/d’ dataf2 #把含有 La 的行删除 sed ‘/La/!d`’#把不含 La 的行删除,!是 ...