hdu 1528 Card Game Cheater ( 二分图匹配 )
题目:点击打开链接
题意:两个人纸牌游戏,牌大的人得分。牌大:2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 < T < J < Q
< K < A 。值一样看花色, hearts (红心) > spades (黑桃) > diamond (方块) >
clubs (梅花)。问Eve 能得多少分。(每次得1分)
分析:将Eve的每张牌与Adam的所有牌比较,与所有比这张牌小的Adam的牌连边。
然后求最大匹配。
感想:几天前就写了,开始WA以为是对于王没有四种花色的处理应该分开。昨天
突然发现问题根本不在那,因为这里面根本没说王,是数组开小了。
代码:
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std; char t1[15]={'2','3','4','5','6','7','8','9','T','J','Q','K','A'};
int t2[15]={1,2,3,4,5,6,7,8,9,10,11,12,13};
struct node
{
int id;
char cha;
char type;
}card[60];
int n,cnt;
int match[60];
int vis[60];
int g[60][60]; bool judge(int x,int y)
{
if(card[x].type=='H' && card[y].type!='H')
return true;
else if(card[x].type=='S' && (card[y].type=='D'||card[y].type=='C'))
return true;
else if(card[x].type=='D' && card[y].type=='C')
return true;
else return false;
}
bool dfs(int u)
{
for(int i=1;i<=n;i++)
{
if(g[u][i] && !vis[i])
{
vis[i]=true;
if(match[i]==-1 || dfs(match[i]))
{
match[i]=u;
return true;
}
}
}
return false;
}
int main()
{
int T,i,j,k;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
getchar();
memset(card,0,sizeof(card));
memset(match,-1,sizeof(match));
memset(g,0,sizeof(g));
for(j=1;j<=n;j++)
{
card[j].cha=getchar();
for(k=0;k<13;k++)
if(card[j].cha==t1[k])
card[j].id=t2[k];
/*if(card[j].id==13)
{
if(j<=n-1)
getchar();
continue;
}*/
card[j].type=getchar();
if(j<=n-1)
getchar();
}
getchar();
for(j=n+1;j<=2*n;j++)
{
card[j].cha=getchar();
for(k=0;k<13;k++)
if(card[j].cha==t1[k])
card[j].id=t2[k];
/*if(card[j].id==13)
{
if(j<=n-1)
getchar();
continue;
}*/
card[j].type=getchar();
getchar();
for(i=1;i<=n;i++)
{
if(card[j].id>card[i].id)
g[j][i]=true;
else if(card[j].id==card[i].id && judge(j,i))
g[j][i]=true;
}
}
cnt=0;
for(i=n+1;i<=2*n;i++)
{
memset(vis,0,sizeof(vis));
if(dfs(i))
cnt++;
}
printf("%d\n",cnt);
}
return 0;
}
hdu 1528 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 ...
- HDOJ 1528 Card Game Cheater
版权声明:来自: 码代码的猿猿的AC之路 http://blog.csdn.net/ck_boss https://blog.csdn.net/u012797220/article/details/3 ...
- hdu 3829 Cat VS Dog 二分图匹配 最大点独立集
Cat VS Dog Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 125536/65536 K (Java/Others) Prob ...
- HDU 4685 Prince and Princess 二分图匹配+tarjan
Prince and Princess 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=4685 Description There are n pri ...
- HDU 2236 无题II(二分图匹配+二分)
HDU 2236 无题II 题目链接 思路:行列仅仅能一个,想到二分图,然后二分区间长度,枚举下限.就能求出哪些边是能用的,然后建图跑二分图,假设最大匹配等于n就是符合的 代码: #include & ...
- TTTTTTTTTTTTTTTT hdu 5727 Necklace 阴阳珠 二分图匹配+暴力全排列
Necklace Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Su ...
- hdu 4619 Warm up 2 二分图匹配
题目链接 给两种长方形, 水平的和垂直的, 大小都为1*2, n个水平的, m个垂直的, 给出它们的坐标. 水平的和垂直的可以相互覆盖, 但是同种类型的没有覆盖. 去掉一些长方形, 使得剩下的全部都没 ...
- HDU 1045 Fire Net 【二分图匹配】
<题目链接> 题目大意: 这题意思是给出一张图,图中'X'表示wall,'.'表示空地,可以放置炮台,同一条直线上只能有一个炮台,除非有'X'隔开,问在给出的图中最多能放置多少个炮台. 解 ...
- HDU 5727 Necklace(全排列+二分图匹配)
http://acm.split.hdu.edu.cn/showproblem.php?pid=5727 题意:现在有n个阳珠子和n个阴珠子,现在要把它们串成项链,要求是阴阳珠子间隔串,但是有些阴阳珠 ...
随机推荐
- css 定义hr的几种样式
<style type="text/css"> <!-- .hr0{ height:1px;border:none;border-top:1px dashed # ...
- JavaEE Tutorials (11) - 使用Criteria API创建查询
11.1Criteria和Metamodel API概述16811.2使用Metamodel API为实体类建模170 11.2.1使用元模型类17011.3使用Criteria API和Metamo ...
- 使用Win32 API创建不规则形状&带透明色的窗口
前一阵突然想起了9月份电面某公司实习时的二面题,大概就是说怎么用Win32 API实现一个透明的窗口,估计当时我的脑残答案肯定让面试官哭笑不得吧.所以本人决定好好研究下这个问题.经过一下午的摸索,基本 ...
- Three Swaps DFS
E. Three Swaps time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- 使用C#对MongoDB中的数据进行查询,改动等操作
首先,使用的是官方提供的C#訪问组件https://github.com/mongodb/mongo-csharp-driver 然后.编译后引用MongoDB.Bson.dll及MongoDB.Dr ...
- 概率图模型(PGM)学习笔记(四)-贝叶斯网络-伯努利贝叶斯-多项式贝叶斯
之前忘记强调了一个重要差别:条件概率链式法则和贝叶斯网络链式法则的差别 条件概率链式法则 贝叶斯网络链式法则,如图1 图1 乍一看非常easy认为贝叶斯网络链式法则不就是大家曾经学的链式法则么,事实上 ...
- BZOJ3231(矩阵连乘,稍有点复杂)
题目:3231: [Sdoi2008]递归数列 题意: 一个由自然数组成的数列按下式定义: 对于i <= k:ai = bi 对于i > k: ai = c1ai-1 + c2ai-2 ...
- js中的setTimeout和setInterval
在html页面中要使用自动刷新功能时,可以是使用js中setTimeout和setInterval: 一.使用方法 setTimeout的使用setTimeout('要调用的Js方法', 调用的延迟时 ...
- HYSBZ 2301
/*** 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数 **/ #include <iost ...
- IOS 隐藏键盘。
在View的UITextField中经常需要输入完文字后隐藏软键盘,要实现着一点要让View的Controller实现UITextFieldDelegate代理,然后编写相应的代码. #import ...