题目:点击打开链接

题意:两个人纸牌游戏,牌大的人得分。牌大: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 ( 二分图匹配 )的更多相关文章

  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. Delphi程序自删除的几种方法

    program Project1; uses SysUtils, windows; var f:textfile; a:string; begin a:=paramstr(); assignfile( ...

  2. mfc删除标题和边框

    //删除标题和边框WS_CAPTION和WS_BORDER风格 ModifyStyle(WS_CAPTION, 0);ModifyStyle(WS_BORDER, 0);

  3. JAVA GUI学习 - JDialog模式、非模式窗口组件学习

    /** * JDilog学习笔记 * @author Wfei * */ public class JDialogKnow extends JFrame { JDialog jDialog; JBut ...

  4. JAVA 创建TXT文件,写入文件内容,读取文件内容

    [java]  view plain copy   package com.abin.facade.ws.mail.function; import java.io.BufferedReader; i ...

  5. PHP移动互联网开发(1)——环境搭建及配置

    原文地址:http://www.php100.com/html/php/rumen/2014/0326/6702.html 一.PHP5.4环境搭配基本流程 Apache:Web服务提供者.官网:ww ...

  6. 信号量多-threaded同步Semaphore

    Semaphore它是JDK1.5一个实现后,外面有个办法同步.Semaphore能够保持其当前的线程接入号码.并提供了一个同步机制. 采用Semaphore时,可以用相同的对资源的访问进行控制的线程 ...

  7. c基础总结

    机器大小端判断: #include <stdio.h> typedef union{ char x; int i; }un; int main() { un tt; tt.i = ; ) ...

  8. 循环训练(for的嵌套、while、do while)以及异常处理

    For的嵌套 练习一: 练习二: 练习三: 练习四: while的使用方法: 示例一: 示例二: 示例三: while的练习题: do while的使用示例: 异常处理示例: try   catch  ...

  9. LeetCode:链表排序

    Sort a linked list in O(n log n) time using constant space complexity. public class Solution { publi ...

  10. debian下samba配置

    debian下samba配置  http://blog.chinaunix.net/uid-2282111-id-2113216.html 服务器端配置过程:1. apt-get install sa ...