问题描述

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.

输入

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

输出

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.

样例输入

3
1
JD JH
2
5D TC
4C 5H
3
2H 3H
4H 2D
3D 4D

样例输出

1 1 2
题意:2个人打牌一张牌由2个字符表示 第一个是(23456789TJQKA) 第二个是(CDSH) 大小关系从左到右递增  现在第2个人知道了第一个人的牌 问在最好的打发下第二个人能赢几次?
(贪心就搞就是待自己写个排序。)

#include<cstdio>
#include<cstring>
#include<stack>
#include<vector>
#include<queue>
#include<cmath>
#include<cstdlib>
#include<iostream>
#include<algorithm>
using namespace std;
typedef unsigned long long LL;
typedef double de;
const LL oo = 0x3f3f3f3f;
const LL maxn = 1e6+7;
const LL mod = 1e9+7;
char str[20]= {"23456789TJQKA"};
char str1[20] = {"CDSH"};
struct da
{char s[10];
} Adam[222], You[222];
void Sort(char s1[], char s2[])///把2个字符串升序排列
{char ss[20];int i, ai, bi;for(i = 0; i <= 12; i++){if(s1[0] == str[i]) ai = i;if(s2[0] == str[i]) bi = i;}if(ai < bi) return ;if(ai > bi){strcpy(ss, s1);strcpy(s1, s2);strcpy(s2, ss);return ;}for(i = 0; i < 4; i++){if(s1[1] == str1[i]) ai = i;if(s2[1] == str1[i]) bi = i;}if(ai > bi){strcpy(ss, s1);strcpy(s1, s2);strcpy(s2, ss);}return ;
}
int judge(char s1[], char s2[]) /// 返回1表示s1<s2
{int i;char a, b;int ai, bi;a = s1[0];b = s2[0];for(i = 0; i <= 12; i++){if(str[i] == a) ai = i;if(str[i] == b) bi = i;}if(ai < bi) return 1;if(ai > bi) return 0;a = s1[1];b = s2[1];ai = bi = -1;for(i = 0; i < 4; i++){if(str1[i] == a) ai = i;if(str1[i] == b) bi = i;}if(ai < bi) return 1;return 0;
}int main()
{int T, k, i, j, ans;scanf("%d", &T);while(T--){ans = 0;scanf("%d", &k);for(i = 0; i < k; i++)scanf("%s", Adam[i].s);for(i = 0; i < k; i++)scanf("%s", You[i].s);for(i = 0; i < k-1; i++){for(j = i+1; j < k; j++)Sort(Adam[i].s, Adam[j].s);}for(i = 0; i < k-1; i++){for(j = i+1; j < k; j++)Sort(You[i].s, You[j].s);}i = j = 0;///排完序从头遍历一边就好 i,j分别指向2个人的第几张牌while(i < k && j < k){if(judge(Adam[i].s, You[j].s) == 1){ans ++;i++;j++;}else j++;}printf("%d\n", ans);}return 0;
}

转载于:https://www.cnblogs.com/PersistFaith/p/4948084.html

hdu1528 Card Game Cheater相关推荐

  1. HDU - 1528 Card Game Cheater(二分图最大匹配)

    题目链接:点击查看 题目大意:题意有点像求田忌赛马的最优解,大概意思就是现在有两个人,每个人都有n张不同的扑克牌,扑克牌的大小首先以点数来确定,点数相同的情况下以花色来决定,红桃(Heart)> ...

  2. 【HDOJ图论题集】【转】

    1 =============================以下是最小生成树+并查集====================================== 2 [HDU] 3 1213 How ...

  3. 一系列图论问题[转]

    =============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...

  4. 【转载】图论 500题——主要为hdu/poj/zoj

    转自--http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...

  5. 杭电OJ分类题目(4)-Graph

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(4) HDU Graph Theory - U ...

  6. 杭电oj题目题型分类(转)

    1001 整数求和 水题 1002 C语言实验题--两个数比较 水题 1003 1.2.3.4.5... 简单题 1004 渊子赛马 排序+贪心的方法归并 1005 Hero In Maze 广度搜索 ...

  7. HDOJ题目分类大全

    版权声明:本文为博主原创文章,欢迎转载,转载请注明本文链接! https://blog.csdn.net/qq_38238041/article/details/78178043 杭电里面有很多题目, ...

  8. HDU题目分类大全【大集合】

    基础题: 1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029.  1032.1037.1040.1048.1056.105 ...

  9. kk_想要学习的知识

    2018/4/27 计算几何 一.简介 计算几何属于ACM算法中比较冷门的分类,在省赛中只在前几年考察过,这两年还没有考过,而且和高精度计算一样,遇到题目主要靠套模板,因此对题意的理解至关重要,而且往 ...

最新文章

  1. 在内部循环中Continue外部循环
  2. HDU 4741 Save Labman No.004 计算几何 数学
  3. 协议转换器的特点有哪些?
  4. fread读取整个文件_qt如何实现大文件的加载和显示
  5. 字符串匹配(一)—— KMP / MP
  6. 17_python基础—面向对象-继承
  7. 树莓派安装TPLINK_WN725n v2网卡驱动
  8. AspNetPager控件+repeater+Ajax+存储过程实现高效分页,还有漂亮控件样式
  9. python3.x Day3 文件编码
  10. linux服务器raid逻辑盘迁移,raid空闲盘的热迁移
  11. html标签的英文全拼,HTML标签全称对照
  12. 网络操作系统之网络操作系统的功能
  13. layui switch使用详解
  14. 用opencv实现连连看外挂
  15. 制作3D实时交互影像产品,需要用到的技术和软件!
  16. Libra最后的命运
  17. CC2530外部中断控制LED灯开关
  18. 基于UWB的室内SDS_TWR测距算法优化和定位算法融合的研究
  19. 淘宝关注的主播查询教程(2021)
  20. 数据库事务的四个性质

热门文章

  1. 怎么看b树是几阶_B站广告部混入A站内鬼?网友:请问怎么在B站看租借女友?...
  2. python什么是关键字参数_Python 函数 (关键字参数)
  3. pip install transformers出现拒绝访问
  4. 机器学习的部分名词解释20180724
  5. 傅里叶变换的初级理解一
  6. linux内核oops错误码说明,Oops 定位错误代码行
  7. linux手机远程桌面连接软件下载,HomeCenter手机远程桌面下载_HomeCenter手机远程桌面官方下载-太平洋下载中心...
  8. qt连接错误ip的sqlserver超时时间_参数设置导致请求超时案例
  9. 软件项目管理0831:不要自我评价过高
  10. jquery打开页面