hdoj1528【二分匹配】
题意:
在一幅扑克牌里,有两个人在比大小,第二个人最多能赢第一个人几张牌。
思路:
这道题目用一下二分匹配还是很明显的。
那么就是建图似乎要麻烦一下,但还是很方便的。将扑克牌一次进行编号,然后牌面比他小的就有一条边。这是一张大的图,两个人的手牌还是要标记一下,因为我们只对取到的牌操作。然后就是在这个范围内跑一跑二分匹配就好了。还是满基础的建图+二分匹配,我都1A了…
code:
#include<cstdio>
#include<math.h>
#include<vector>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
#define INF 0X3f3f3f3f
typedef long long LL;
int ma[55][55];
bool in1[55];
bool in2[55];
bool vis[55];
int cx[55];
int cy[55];
int findpath(int u) //习惯写成findpath...
{
for(int i=1;i<=52;i++)
{
if(!vis[i]&&in2[i]&&ma[u][i])
{
vis[i]=1;
if(cy[i]==-1)
{
cx[u]=i;
cy[i]=u;
return 1;
}
else if(in1[cy[i]])
{
if(findpath(cy[i]))
{
cy[i]=u;
cx[u]=i;
return 1;
}
}
}
}
return 0;
}
void init()
{
memset(ma,0,sizeof(ma));
for(int i=1;i<=52;i++)
{
for(int j=1;j<i;j++)
ma[i][j]=1;
}
}
int get1(char x)
{
if(x>='2'&&x<='9')
return x-1-48;
if(x=='T')
return 9;
if(x=='J')
return 10;
if(x=='Q')
return 11;
if(x=='K')
return 12;
if(x=='A')
return 13;
}
int get2(char x)
{
if(x=='C')
return 1;
if(x=='D')
return 2;
if(x=='S')
return 3;
if(x=='H')
return 4;
}
int main()
{
init();
int T;
scanf("%d",&T);
while(T--)
{
int n;
scanf("%d",&n);
char xx[3];
memset(in1,0,sizeof(in1));
memset(in2,0,sizeof(in2));
for(int i=0;i<n;i++)
{
scanf("%s",xx);
int s1=get1(xx[0]);
s1=(s1-1)*4;
int s2=get2(xx[1]);
in2[s1+s2]=1;
}
for(int i=0;i<n;i++)
{
scanf("%s",xx);
int s1=get1(xx[0]);
s1=(s1-1)*4;
int s2=get2(xx[1]);
in1[s1+s2]=1;
}
// for(int i=1;i<=52;i++)
// {
// if(in2[i])
// printf("%d ",i);
// }
// puts("");
//
// for(int i=1;i<=52;i++)
// {
// if(in1[i])
// printf("%d ",i);
// }
// puts("");
memset(cx,-1,sizeof(cx));
memset(cy,-1,sizeof(cy));
int ans=0;
for(int i=1;i<=52;i++)
{
if(cx[i]==-1&&in1[i])
{
memset(vis,0,sizeof(vis));
if(findpath(i))
{
//printf("%d\n",i);
ans++;
}
}
}
printf("%d\n",ans);
}
return 0;
}
/*
100
1
JD
JH
2
5D TC
4C 5H
3
2H 3H 4H
2D 3D 4D
*/
hdoj1528【二分匹配】的更多相关文章
- POJ 1274 The Perfect Stall、HDU 2063 过山车(最大流做二分匹配)
The Perfect Stall Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 24081 Accepted: 106 ...
- [kuangbin带你飞]专题十 匹配问题 二分匹配部分
刚回到家 开了二分匹配专题 手握xyl模板 奋力写写写 终于写完了一群模板题 A hdu1045 对这个图进行 行列的重写 给每个位置赋予新的行列 使不能相互打到的位置 拥有不同的行与列 然后左行右列 ...
- BZOJ 1189 二分匹配 || 最大流
1189: [HNOI2007]紧急疏散evacuate Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1155 Solved: 420[Submi ...
- Kingdom of Obsession---hdu5943(二分匹配)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5943 题意:给你两个数n, s 然后让你判断是否存在(s+1, s+2, s+3, ... , s+n ...
- poj 2060 Taxi Cab Scheme (二分匹配)
Taxi Cab Scheme Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 5710 Accepted: 2393 D ...
- [ACM_图论] Sorting Slides(挑选幻灯片,二分匹配,中等)
Description Professor Clumsey is going to give an important talk this afternoon. Unfortunately, he i ...
- [ACM_图论] The Perfect Stall 完美的牛栏(匈牙利算法、最大二分匹配)
描述 农夫约翰上个星期刚刚建好了他的新牛棚,他使用了最新的挤奶技术.不幸的是,由于工程问题,每个牛栏都不一样.第一个星期,农夫约翰随便地让奶牛们进入牛栏,但是问题很快地显露出来:每头奶牛都只愿意在她们 ...
- nyoj 237 游戏高手的烦恼 二分匹配--最小点覆盖
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=237 二分匹配--最小点覆盖模板题 Tips:用邻接矩阵超时,用数组模拟邻接表WA,暂时只 ...
- UVA5874 Social Holidaying 二分匹配
二分匹配简单题,看懂题意,建图比较重要. #include<stdio.h> #include<string.h> #define maxn 1100 int map[maxn ...
随机推荐
- Linux - Unix环境高级编程(第三版) 代码编译
Unix环境高级编程(第三版) 代码编译 本文地址:http://blog.csdn.net/caroline_wendy 时间:2014.10.2 1. 下载代码:http://www.apuebo ...
- html使用代码大全
<DIV style="FONT-SIZE: 9pt">1)贴图:<img src="图片地址">1)首行缩进2格:<p styl ...
- Canvas坐标轴中的Y轴距离是X轴的两倍
如题,相信很多人在初次玩canvas的时候会出现这样的情况,跟着教程走的情况下,诶 怎么画出来的东西,不怎么对劲啊,,,ԾㅂԾ,,!!!!!先上代码 <!DOCTYPE html> < ...
- rtsp 播放器
http://blog.csdn.net/niu_gao/article/details/7753672 /********************************************** ...
- vmware nat不能上网的解决办法
1 很多奇怪的问题都是vmware突然不能上网导致的 当yum.pip等包管理工具突然不能上网了时,要ping www.baidu.com,看看网络是不是好的. 2 nat网络出现问题的解决办法 2. ...
- Java对对象的引用 不是 引用调用 而是按值引用 Java不存在引用调用
call by reference Java call by value
- Joomla中的Task 和view 深入学习
[本文转自:梦溪笔记] Joomla 是一个优秀的CMS系统,她可以让你快速的完成一个网站的建设,她提供组件,模块,模板能够满足你大部分的网站需求.而组件在其中举足轻重. 一.基本知识 组件(comp ...
- mmwave
毫米波(mmWave) 致力于支持5G应用创新开发,集成在BEEcube BEE7基带平台上的赛灵思256QAM毫米波调制解调器IP为宽带回程原型设计提供完整的开箱即用型解决方案 赛灵思公司 (NAS ...
- vue文档重读有感
vue 官方文档,每次读都有不一样的感受.项目已经做过一个了,遇到了不少问题,下面总结下这次看到的注意点: 一.指令方面 1. v-once 一次性绑定,只渲染元素和组件一次.随后的重新渲染,元素/ ...
- UVA-10827(前缀和降维)
题意: 给一个n*n的正方形,第一行和最后一行粘在一块,第一列和最后一列粘在一块,求这个环面上的最大的子矩形; 思路: 直接暴力是O(n^6)的复杂度,可以把前缀和求出来,这样就可以只用枚举四条边界就 ...