hdu 1528+hdu 1962(最小覆盖)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1528
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1962
思路:求二分图的最小覆盖,最小覆盖=最大匹配;
建图略麻烦。。。
1 #include<iostream> 2 const int MAXN=30; 3 using namespace std; 4 int n; 5 bool map[MAXN][MAXN]; 6 int lx[MAXN],ly[MAXN]; 7 bool mark[MAXN]; 8 9 int dfs(int u){ 10 for(int i=1;i<=n;i++){ 11 if(!mark[i]&&map[u][i]){ 12 mark[i]=true; 13 if(ly[i]==-1||dfs(ly[i])){ 14 ly[i]=u; 15 lx[u]=i; 16 return true; 17 } 18 } 19 } 20 return false; 21 } 22 23 int MaxMatch(){ 24 int res=0; 25 memset(lx,-1,sizeof(lx)); 26 memset(ly,-1,sizeof(ly)); 27 for(int i=1;i<=n;i++){ 28 if(lx[i]==-1){ 29 memset(mark,false,sizeof(mark)); 30 res+=dfs(i); 31 } 32 } 33 return res; 34 } 35 36 int main(){ 37 int _case; 38 scanf("%d",&_case); 39 while(_case--){ 40 scanf("%d",&n); 41 char str1[MAXN][4],str2[MAXN][4]; 42 memset(map,false,sizeof(map)); 43 for(int i=1;i<=n;i++){ 44 scanf("%s",str1[i]); 45 } 46 for(int i=1;i<=n;i++){ 47 scanf("%s",str2[i]); 48 for(int j=1;j<=n;j++){ 49 if(str2[i][0]==str1[j][0]){ 50 if(str2[i][1]==str1[j][1])continue; 51 else if(str2[i][1]=='H'){ 52 map[i][j]=true; 53 }else if(str2[i][1]=='S'&&str1[j][1]!='H'){ 54 map[i][j]=true; 55 }else if(str2[i][1]=='D'&&str1[j][1]=='C'){ 56 map[i][j]=true; 57 } 58 }else if(str2[i][0]>='2'&&str2[i][0]<='9'){ 59 if(str1[j][0]>='2'&&str1[j][0]<='9'&&str2[i][0]>str1[j][0]){ 60 map[i][j]=true; 61 } 62 }else if(str2[i][0]=='T'&&str1[j][0]>='2'&&str1[j][0]<='9'){ 63 map[i][j]=true; 64 }else if(str2[i][0]=='J'&&(str1[j][0]>='2'&&str1[j][0]<='9'||str1[j][0]=='T')){ 65 map[i][j]=true; 66 }else if(str2[i][0]=='Q'&&str1[j][0]!='K'&&str1[j][0]!='A'){ 67 map[i][j]=true; 68 }else if(str2[i][0]=='K'&&str1[j][0]!='A'){ 69 map[i][j]=true; 70 }else if(str2[i][0]=='A'){ 71 map[i][j]=true; 72 } 73 } 74 } 75 int ans=MaxMatch(); 76 printf("%d\n",ans); 77 } 78 return 0; 79 }
hdu 1528+hdu 1962(最小覆盖)相关推荐
- HDU 1853 HDU 3488【有向环最小权值覆盖问题 】带权二分图匹配 KM算法
HDU 1853 & HDU 3488[有向环最小权值覆盖问题 ]最小费用最大流 In the kingdom of Henryy, there are N (2 <= N <= ...
- HDU 1853 HDU 3488【有向环最小权值覆盖问题 】最小费用最大流
HDU 1853 & HDU 3488[有向环最小权值覆盖问题 ]带权二分图匹配 KM算法 In the kingdom of Henryy, there are N (2 <= N & ...
- 母函数+例题(hdu 2079+hdu 2082)
母函数+例题(hdu 2079+hdu 2082) 虽然ACM的确有点力不从心,但是还是贵在坚持,继续啃啃算法..... 昨天一个下午学了学母函数,离散数学+幂级数,只能说nb- 看了半天的原理,结果 ...
- HDU - 1528 Card Game Cheater(二分图最大匹配)
题目链接:点击查看 题目大意:题意有点像求田忌赛马的最优解,大概意思就是现在有两个人,每个人都有n张不同的扑克牌,扑克牌的大小首先以点数来确定,点数相同的情况下以花色来决定,红桃(Heart)> ...
- hdu 1251+hdu 1671(字典树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1251 一开始我是直接用STL做的,唉...没有经验那...orz...然后毫无疑问地超时了... 看别 ...
- hdu 2063+hdu 1083(最大匹配数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 二分匹配水题,求最大匹配数(即求边数最多的匹配),匈牙利算法实现.. View Code 1 # ...
- hdu 2112 HDU Today 最短路(Dijkstra算法)
HDU Today Time Limit: 15000/5000 MS ...
- HDU 2112 HDU Today (dijkstar + map)
HDU Today Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- KMP算法 hdu 1711 hdu 2203
mark一下,重新温习了 KMP KMP复杂度O(n+m) 这里有一个解释的超级的好的博客,大家可以去看一下:http://blog.csdn.net/v_july_v/article/details ...
最新文章
- 鸿蒙os系统的iphonexr,iPhoneXS/XR终极防水测试:iPhoneXR不幸阵亡
- numpy是python标准库吗_python – 找出Numpy是否使用了哪个BLAS库
- 卸载iso linux系统文件夹,在Ubuntu系统中如何卸载光盘/DVD/ISO
- asp.net学习资源汇总
- 动态折线图-Android篇
- Windows 7 Beta(32位\64位)官方镜像文件下载
- java 8中 predicate chain的使用
- mysql+create+table+index_mysql------基础及常见SQL技巧
- Nginx-Lua重定向系列
- PAT Basic 1002
- 用Python玩转统计数据:取样、计算相关性、拆分训练模型和测试
- 分享一下10个常用jquery片段
- win7安装计算机的更新,解决win7系统更新升级教程
- matlab中dot是什么,matlab中ddot是什么
- 什么是白箱测试、黑箱测试、回归测试?
- krait和kryo_高通kryo架构还是arm吗
- 帝国Empire采集-帝国如何免费采集
- 锂电池原理与使用保养
- 无人机作战效能评估系统
- 《java并发编程的艺术》阅读笔记总结