题目链接:点击查看

题目大意:题意有点像求田忌赛马的最优解,大概意思就是现在有两个人,每个人都有n张不同的扑克牌,扑克牌的大小首先以点数来确定,点数相同的情况下以花色来决定,红桃(Heart)>黑桃(Spade)>方块(Diamond)>梅花(Club),然后第一个人的出牌顺序已经确定了,第二个人的出牌顺序可以由我们来决定,问如何让第二个人赢得次数最多

题目分析:简单的二分图最大匹配,两个子集就是第一个人手中的扑克牌和第二个人手中的扑克牌,在预处理的时候对于每张扑克牌的花色和点数用一个结构体来储存,并且重载一下这个结构体的小于号,然后两重循环枚举一下两个人的扑克牌,只要满足第二个人的牌大于第一个人的牌直接建边即可,最后跑一边匈牙利就是答案了

这个题有个小坑,就是A代表的是大王,而不是1,在预处理的时候注意一下即可

代码:

#include<iostream>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cctype>
#include<stack>
#include<queue>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<sstream>
#include<unordered_map>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=30;int n;struct card
{int suit,point;bool operator<(const card& a)const//重载一下小于号{if(point!=a.point)return point<a.point;return suit<a.suit;}
}a[N],b[N];int change1(char ch)//预处理点数
{if(isdigit(ch))return ch-'0';else if(ch=='T')return 10;else if(ch=='J')return 11;else if(ch=='Q')return 12;else if(ch=='K')return 13;else if(ch=='A')return 14;
}int change2(char ch)//预处理花色
{if(ch=='H')return 4;else if(ch=='S')return 3;else if(ch=='D')return 2;elsereturn 1;
}bool maze[N][N],vis[N];int match[N];bool dfs(int x)
{for(int i=1;i<=n;i++){if(maze[x][i]&&!vis[i]){vis[i]=true;if(!match[i]||dfs(match[i])){match[i]=x;return true;}}}return false;
}void init()
{memset(maze,false,sizeof(maze));memset(match,0,sizeof(match));
}int main()
{
//  freopen("input.txt","r",stdin);
//    ios::sync_with_stdio(false);int w;cin>>w;while(w--){init(); scanf("%d",&n);char s[5];for(int i=1;i<=n;i++){scanf("%s",s);a[i].point=change1(s[0]);a[i].suit=change2(s[1]);}for(int i=1;i<=n;i++){scanf("%s",s);b[i].point=change1(s[0]);b[i].suit=change2(s[1]);}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(a[j]<b[i])maze[i][j]=true;}}int ans=0;for(int i=1;i<=n;i++){memset(vis,false,sizeof(vis));if(dfs(i))ans++;}printf("%d\n",ans);}return 0;
}

HDU - 1528 Card Game Cheater(二分图最大匹配)相关推荐

  1. HDU - 5090 Game with Pearls(二分图最大匹配)

    题目链接:点击查看 题目大意:杰瑞和汤姆在玩游戏,游戏规则是:汤姆会拿来N个容器,每个容器内一开始就会包含1~N个小球,现在轮到杰瑞操作了,杰瑞可以选择往每个容器里加入0个或者任意k的倍数个小球,问杰 ...

  2. HDU - 2063 过山车(二分图最大匹配)

    题目链接:点击查看 题目大意:中文题目,不多赘述 题目分析:二分图最大匹配问题,匈牙利经典算法模板题,感觉这个博客写的很好,插个眼: https://article.itxueyuan.com/Aea ...

  3. 解题报告 (九) 二分图最大匹配

    文章目录 二分图最大匹配 解题报告 一.最大匹配模板题 HDU 1083 Courses HDU 2063 过山车 HDU 1528 Card Game Cheater HDU 1179 Olliva ...

  4. HDU 3729 I'm Telling the Truth(二分图最大匹配)

    HDU 3729 I'm Telling the Truth(二分图最大匹配) http://acm.hdu.edu.cn/showproblem.php?pid=3729 题意: 一位老师想问N位同 ...

  5. HDU - 1054 Strategic Game(最小点覆盖-二分图最大匹配)

    题目链接:点击查看 题目大意:给出一棵树,现在要在节点上放置士兵,每个士兵可以监视与其所在的节点直接相连的节点,问最少需要多少个士兵才能将整棵树都监视到 题目分析:求最少的节点,以保证每条边都有一个端 ...

  6. HDU - 2389 Rain on your Parade(Hopcroft-Krap算法求二分图最大匹配)

    题目链接:点击查看 题目大意:给出n个人和m个雨伞,t分钟后就要下雨了,现在给出每个人的坐标和速度,以及雨伞所在的坐标,每个雨伞只能容纳一个人,题目问最多有多少个人能不被淋到 题目分析:二分图最大匹配 ...

  7. HDU - 1150 Machine Schedule(最小点覆盖-二分图最大匹配)

    题目链接:点击查看 题目大意:现在有一个机器A和一个机器B,A机器有n种模式,B机器有m种模式,现在有k次工作需要完成,每次工作的信息为: id x y:编号为id,在A机器要用x模式完成,在B机器要 ...

  8. 二分图判断以及二分图最大匹配

    概念 二分图又称作二部图 ,是图论中的一种特殊模型. 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的 ...

  9. 二分图最大匹配与最大独立集

    一.概念部分 1.什么是二分图? 通俗的说法:就是可以把图分成两部分,每一部分任意两点之间没有关系(同一部落),两部分之间点可能存在多种关系. 2.怎么判断二分图? (1)理论判定:如果某个图为二分图 ...

最新文章

  1. springboot接收多对象_SpringBoot同时接收单个对象和List<object>参数
  2. Ansible 详解2-Playbook使用
  3. 数据监测驱动下的信息流广告优化
  4. BNU44583——Star Trek: First Contact——————【01背包】
  5. 玲珑杯round11-B:萌萌哒的第二题
  6. python之判断一个值是不是可以被调用
  7. PAT (Basic Level) Practice1011 A+B 和 C
  8. 计算机12点自动关机,电脑怎么设置定时自动关机命令 电脑设置定时关机方法【图文】...
  9. MySQL基础(DML,DQL,增删改查)
  10. python简易中文名转英文小程序
  11. H5如何获取内网IP和公网IP
  12. java BPM平台1:设计思路
  13. HTTP 错误 404.0 - Not Found
  14. 数据分析(入门)纳米学位_tensorflow纳米级程序对机器学习入门的回顾
  15. 0906期特别策划——“架构师大阅兵”
  16. 烧菜技巧 如何炒辣椒油
  17. SQL语句练习:电商数据库
  18. unity 中excel转json插件
  19. Mac 如何关闭「开盖自动开机」功能
  20. html 顶层标签,HTML什么是顶层标签

热门文章

  1. CORS 跨域-同源
  2. MySQL where后面的列子查询使用
  3. 缓冲区Buffer-Buffer操作基本API
  4. 运行时数据区内部结构
  5. 上传问题分析2--文件重名
  6. Azkaban-solo模式-安装
  7. 按指定格式拼接字符串
  8. 方法的重写-扩展父类方法,super对象调用父类方法
  9. 按键改变元素背景颜色 链式编程的原理 评分案例 each方法的使用
  10. mysql使用常量列_MySQL 执行计划