hdu 1528 Card Game Cheater (最小覆盖)
来源:互联网 发布:知乎精神 编辑:程序博客网 时间:2024/05/16 01:00
点击打开链接
给定A,B两组牌,让找出B最多能的多少分
首先对牌的字符串全部转化成十进制数,然后以数字为点,
B集合元素相对于A集合数字的大小关系为边,显然是典型的最小顶点覆盖问题
#include"stdio.h"#include"string.h"#define N 52int map[N][N],v[N],link[N];int A[N],B[N],t,n;int dfs(int k){ int i; for(i=1;i<=n;i++) { if(map[k][i]&&!v[i]) { v[i]=1; if(link[i]==0||dfs(link[i])) { link[i]=k; return 1; } } } return 0;}int main(){ char c,d,e; int i,j,vv,flag,ans; int ap,bp; scanf("%d",&t); while(t--) { scanf("%d",&n); getchar(); flag=1; ap=bp=0; for(i=0;i<2*n;i++) { scanf("%c%c%c",&c,&d,&e); if(c>='0'&&c<='9') vv=c-'0'; if(c=='T')vv=10; if(c=='J')vv=11; if(c=='Q')vv=12; if(c=='K')vv=13; if(c=='A')vv=14; vv*=100; if(d=='H')vv+=4; if(d=='S')vv+=3; if(d=='D')vv+=2; if(d=='C')vv+=1; if(flag) A[++ap]=vv; else B[++bp]=vv; if(e=='\n') flag=0; } memset(map,0,sizeof(map)); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(A[i]<B[j]) map[j][i]=1; } } memset(link,0,sizeof(link)); ans=0; for(i=1;i<=n;i++) { memset(v,0,sizeof(v)); if(dfs(i)) ans++; } printf("%d\n",ans); } return 0;}
- hdu 1528 Card Game Cheater (最小覆盖)
- hdu 1528 Card Game Cheater (最小覆盖)
- hdu 1528 Card Game Cheater(最小覆盖)
- hdu 1528 Card Game Cheater
- HDU 1528 Card Game Cheater
- hdu 1528 Card Game Cheater
- HDU-1528 Card Game Cheater
- HDU 1528 Card Game Cheater
- HDOJ 题目1528 Card Game Cheater(二分图最小点覆盖)
- Card Game Cheater HDU
- hdu-1528 Card Game Cheater(最大匹配)
- hdu 1528 Card Game Cheater(二分图最大匹配)
- 【二分匹配】 HDU 1528 Card Game Cheater
- hdu 1528 Card Game Cheater 最大匹配
- HDU 1962 Card Game Cheater
- HDOJ 1528 Card Game Cheater
- hdu 1528 Card Game Cheater ( 二分图匹配 )
- hdu 1528 Card Game Cheater 二分图的经典应用
- Google Maps Javascript API V3 Reference页面上调用谷歌地图
- 中继模式比较Repeating Mode Comparisons
- 闲话企业架构(二)
- http://acm.hdu.edu.cn/showproblem.php?pid=4337&&dfs
- 【Android】桌面Widget动态刷新
- hdu 1528 Card Game Cheater (最小覆盖)
- ASP.NET Page那点事
- getServletContext和getServletConfig区别
- android 定时执行某个操作的方法
- C# 加密解密大全
- Qt的事件过滤器
- oracle的游标控制问题
- Smarttemplate中文安装手册
- zen cart网店系统的robots.txt如何写?