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个阴珠子,现在要把它们串成项链,要求是阴阳珠子间隔串,但是有些阴阳珠 ...
随机推荐
- Android自定义控件(36篇)
http://blog.csdn.net/lmj623565791/article/details/44278417 http://download.csdn.net/user/lmj62356579 ...
- 在VPS上安裝BT軟體Transmission
在VPS上安裝BT軟體Transmission 作者: 窮苦人家的小孩 | 2009-12-04 55 Comments VPS 還能怎玩?! 裝Proxy,裝VPN,這還不夠,我還用來掛種子 ...
- JS获取整个HTML网页代码 - Android 集美软件园 - 博客频道 - CSDN.NET
JS获取整个HTML网页代码 - Android 集美软件园 - 博客频道 - CSDN.NET JS获取整个HTML网页代码 分类: Android提高 2012-01-12 23:27 1974人 ...
- Uber 叫车时,弹出以下代码导致无法打车(An email confirmation has been sent to...),解决办法
”鄙人用了虚拟信用卡+广西的手机号码+163邮箱申请了Uber的新帐号...然后输入mastercn优惠码,上网查询只有这个优惠码,应该就能免费的使用一次用车,限额200元.但在点用车时 弹出窗口提 ...
- vs2010经常使用快捷键
调试快捷键 F6: 生成解决方式 Ctrl+F6: 生成当前项目 F7: 查看代码 Shift+F7: 查看窗口设计器 F5: 启动调试 Ctrl+F5: 開始运行(不调试) Shift+F5: 停止 ...
- SRM 585
250 : 递推,从左下角到右下角走一条,剩下的都是子结构 const int mod = 1000000007; long long dp[1000010] , s[1000010]; class ...
- T-SQL函数及用法--转
转自http://www.cnblogs.com/qixuejia/archive/2010/07/14/1777105.html 1. 聚合函数 (1) AVG 函数功能返回组中值的平均值.空值将被 ...
- HTML5.1就要来了
原文来自https://www.w3.org/blog/2016/04/working-on-html5-1/ 总结一下几个点: 1.六个月内,也就是到九月份的时候,HTML5.1会和大家见面. 2. ...
- C#中常量\枚举\结构及数组的运用
又一天结束了,今天在云和学院学习的知识下面继续来做总结. 一.常量\枚举\结构的运用 理论: 常量:const 类型 常量名 = 常量值 确定数量.确定值的几个取值:东西南北.男女.上中下. 枚举: ...
- ThinkPHP第十二天(Import导入第三方类库方法,独立分组文件夹结构)
1.Import(路径+类名,基础路径): 平时导入类时有三种基础路径:Think:import('Think.core.Action');Think表示ThinkPHP/Lib基础路径,完整路径为T ...