题目:点击打开链接

题意:两个人纸牌游戏,牌大的人得分。牌大:2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 < T < J < Q

< K < A 。值一样看花色, hearts (红心) > spades (黑桃) > diamond (方块) >

clubs (梅花)。问Eve 能得多少分。(每次得1分)

分析:将Eve的每张牌与Adam的所有牌比较,与所有比这张牌小的Adam的牌连边。

然后求最大匹配。

感想:几天前就写了,开始WA以为是对于王没有四种花色的处理应该分开。昨天

           突然发现问题根本不在那,因为这里面根本没说王,是数组开小了。

代码:

  1. #include<cstdio>
  2. #include<iostream>
  3. #include<cstring>
  4. using namespace std;
  5.  
  6. char t1[15]={'2','3','4','5','6','7','8','9','T','J','Q','K','A'};
  7. int t2[15]={1,2,3,4,5,6,7,8,9,10,11,12,13};
  8. struct node
  9. {
  10. int id;
  11. char cha;
  12. char type;
  13. }card[60];
  14. int n,cnt;
  15. int match[60];
  16. int vis[60];
  17. int g[60][60];
  18.  
  19. bool judge(int x,int y)
  20. {
  21. if(card[x].type=='H' && card[y].type!='H')
  22. return true;
  23. else if(card[x].type=='S' && (card[y].type=='D'||card[y].type=='C'))
  24. return true;
  25. else if(card[x].type=='D' && card[y].type=='C')
  26. return true;
  27. else return false;
  28. }
  29. bool dfs(int u)
  30. {
  31. for(int i=1;i<=n;i++)
  32. {
  33. if(g[u][i] && !vis[i])
  34. {
  35. vis[i]=true;
  36. if(match[i]==-1 || dfs(match[i]))
  37. {
  38. match[i]=u;
  39. return true;
  40. }
  41. }
  42. }
  43. return false;
  44. }
  45. int main()
  46. {
  47. int T,i,j,k;
  48. scanf("%d",&T);
  49. while(T--)
  50. {
  51. scanf("%d",&n);
  52. getchar();
  53. memset(card,0,sizeof(card));
  54. memset(match,-1,sizeof(match));
  55. memset(g,0,sizeof(g));
  56. for(j=1;j<=n;j++)
  57. {
  58. card[j].cha=getchar();
  59. for(k=0;k<13;k++)
  60. if(card[j].cha==t1[k])
  61. card[j].id=t2[k];
  62. /*if(card[j].id==13)
  63. {
  64. if(j<=n-1)
  65. getchar();
  66. continue;
  67. }*/
  68. card[j].type=getchar();
  69. if(j<=n-1)
  70. getchar();
  71. }
  72. getchar();
  73. for(j=n+1;j<=2*n;j++)
  74. {
  75. card[j].cha=getchar();
  76. for(k=0;k<13;k++)
  77. if(card[j].cha==t1[k])
  78. card[j].id=t2[k];
  79. /*if(card[j].id==13)
  80. {
  81. if(j<=n-1)
  82. getchar();
  83. continue;
  84. }*/
  85. card[j].type=getchar();
  86. getchar();
  87. for(i=1;i<=n;i++)
  88. {
  89. if(card[j].id>card[i].id)
  90. g[j][i]=true;
  91. else if(card[j].id==card[i].id && judge(j,i))
  92. g[j][i]=true;
  93. }
  94. }
  95. cnt=0;
  96. for(i=n+1;i<=2*n;i++)
  97. {
  98. memset(vis,0,sizeof(vis));
  99. if(dfs(i))
  100. cnt++;
  101. }
  102. printf("%d\n",cnt);
  103. }
  104. return 0;
  105. }

hdu 1528 Card Game Cheater ( 二分图匹配 )的更多相关文章

  1. hdu 1528 Card Game Cheater (二分匹配)

    Card Game Cheater Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  2. HDOJ 1528 Card Game Cheater

    版权声明:来自: 码代码的猿猿的AC之路 http://blog.csdn.net/ck_boss https://blog.csdn.net/u012797220/article/details/3 ...

  3. hdu 3829 Cat VS Dog 二分图匹配 最大点独立集

    Cat VS Dog Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others) Prob ...

  4. HDU 4685 Prince and Princess 二分图匹配+tarjan

    Prince and Princess 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=4685 Description There are n pri ...

  5. HDU 2236 无题II(二分图匹配+二分)

    HDU 2236 无题II 题目链接 思路:行列仅仅能一个,想到二分图,然后二分区间长度,枚举下限.就能求出哪些边是能用的,然后建图跑二分图,假设最大匹配等于n就是符合的 代码: #include & ...

  6. TTTTTTTTTTTTTTTT hdu 5727 Necklace 阴阳珠 二分图匹配+暴力全排列

    Necklace Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Su ...

  7. hdu 4619 Warm up 2 二分图匹配

    题目链接 给两种长方形, 水平的和垂直的, 大小都为1*2, n个水平的, m个垂直的, 给出它们的坐标. 水平的和垂直的可以相互覆盖, 但是同种类型的没有覆盖. 去掉一些长方形, 使得剩下的全部都没 ...

  8. HDU 1045 Fire Net 【二分图匹配】

    <题目链接> 题目大意: 这题意思是给出一张图,图中'X'表示wall,'.'表示空地,可以放置炮台,同一条直线上只能有一个炮台,除非有'X'隔开,问在给出的图中最多能放置多少个炮台. 解 ...

  9. HDU 5727 Necklace(全排列+二分图匹配)

    http://acm.split.hdu.edu.cn/showproblem.php?pid=5727 题意:现在有n个阳珠子和n个阴珠子,现在要把它们串成项链,要求是阴阳珠子间隔串,但是有些阴阳珠 ...

随机推荐

  1. Android自定义控件(36篇)

    http://blog.csdn.net/lmj623565791/article/details/44278417 http://download.csdn.net/user/lmj62356579 ...

  2. 在VPS上安裝BT軟體Transmission

    在VPS上安裝BT軟體Transmission   作者: 窮苦人家的小孩 | 2009-12-04 55 Comments   VPS 還能怎玩?! 裝Proxy,裝VPN,這還不夠,我還用來掛種子 ...

  3. JS获取整个HTML网页代码 - Android 集美软件园 - 博客频道 - CSDN.NET

    JS获取整个HTML网页代码 - Android 集美软件园 - 博客频道 - CSDN.NET JS获取整个HTML网页代码 分类: Android提高 2012-01-12 23:27 1974人 ...

  4. Uber 叫车时,弹出以下代码导致无法打车(An email confirmation has been sent to...),解决办法

    ”鄙人用了虚拟信用卡+广西的手机号码+163邮箱申请了Uber的新帐号...然后输入mastercn优惠码,上网查询只有这个优惠码,应该就能免费的使用一次用车,限额200元.但在点用车时  弹出窗口提 ...

  5. vs2010经常使用快捷键

    调试快捷键 F6: 生成解决方式 Ctrl+F6: 生成当前项目 F7: 查看代码 Shift+F7: 查看窗口设计器 F5: 启动调试 Ctrl+F5: 開始运行(不调试) Shift+F5: 停止 ...

  6. SRM 585

    250 : 递推,从左下角到右下角走一条,剩下的都是子结构 const int mod = 1000000007; long long dp[1000010] , s[1000010]; class ...

  7. T-SQL函数及用法--转

    转自http://www.cnblogs.com/qixuejia/archive/2010/07/14/1777105.html 1. 聚合函数 (1) AVG 函数功能返回组中值的平均值.空值将被 ...

  8. HTML5.1就要来了

    原文来自https://www.w3.org/blog/2016/04/working-on-html5-1/ 总结一下几个点: 1.六个月内,也就是到九月份的时候,HTML5.1会和大家见面. 2. ...

  9. C#中常量\枚举\结构及数组的运用

    又一天结束了,今天在云和学院学习的知识下面继续来做总结. 一.常量\枚举\结构的运用 理论: 常量:const  类型 常量名 = 常量值 确定数量.确定值的几个取值:东西南北.男女.上中下. 枚举: ...

  10. ThinkPHP第十二天(Import导入第三方类库方法,独立分组文件夹结构)

    1.Import(路径+类名,基础路径): 平时导入类时有三种基础路径:Think:import('Think.core.Action');Think表示ThinkPHP/Lib基础路径,完整路径为T ...