此题是我AC的HDU的201道题目。泪流满面啊!

  字典序最大(最小)真是个烦人的东西。

  学生i与其对应的分数区间的每个点连一条边。字典序最大,编号最大的学生开始匹配。

  HK无法AC啊,试了很久。我不会说,能过样例。

  最后用了DFS版的匈牙利算法过了。人们说这个代码简洁。不过我一般都用HK,时间复杂度低。今天发现了这个,还是有收获的。下次什么字典序,就用匈牙利。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
using namespace std;
const int N=,M=,INF=0x3f3f3f3f;
bool bmask[M];
int cx[N],cy[M];
int nx,ans;
vector<int> bmap[N];
int findpath(int u)
{
int i,j;
for(j=;j<bmap[u].size();j++)
{
i=bmap[u][j];
if(!bmask[i])
{
bmask[i]=;
if(cy[i]==-||findpath(cy[i]))
{
cy[i]=u; cx[u]=i;
return ;
}
}
}
return ;
}
void maxmatch()
{
int i ,j;
ans=;
memset(cx,-,sizeof(cx));
memset(cy,-,sizeof(cy));
for(i=nx;i>=;i--)
{
if(cx[i]==-)
{
memset(bmask,,sizeof(bmask));
ans+=findpath(i);
}
}
}
int main()
{
//freopen("test.txt","r",stdin);
int cas,i,j,k,n,a,b;
scanf("%d",&cas);
while(cas--)
{
scanf("%d",&n);
for(i=;i<=n;i++)
{
bmap[i].clear();
scanf("%d%d",&a,&b);
for(k=a;k<=b;k++)
bmap[i].push_back(k);
}
nx=n;
maxmatch();
printf("%d\n",ans);
for(i=;i<=nx;i++)
{
if(cx[i]!=-)
{
printf("%d",i);
ans--;
if(ans) printf(" ");
else printf("\n");
}
}
}
return ;
}

hdu 3729 最大匹配的更多相关文章

  1. HDU 3729 I&#39;m Telling the Truth(二部图最大匹配+结果输出)

    职务地址:HDU 3729 二分图最大匹配+按字典序输出结果. 仅仅要从数字大的開始匹配就能够保证字典序最大了.群里有人问. . 就顺手写了这题. . 代码例如以下: #include <ios ...

  2. hdu 3729(二分图最大匹配)

    I'm Telling the Truth Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  3. HDU 2853 最大匹配&KM模板

    http://acm.hdu.edu.cn/showproblem.php?pid=2853 这道题初看了没有思路,一直想的用网络流如何解决 参考了潘大神牌题解才懂的 最大匹配问题KM 还需要一些技巧 ...

  4. hdu 2413(最大匹配+二分)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2413 思路:由于要求最少的时间,可以考虑二分,然后就是满足在limit时间下,如果地球战舰数目比外星战 ...

  5. hdu 1526(最大匹配)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1526 思路:floyd求传递闭包,然后就是最大匹配了,不过一开始输入没看清,被坑了将近2个小时. #i ...

  6. hdu 2389(最大匹配bfs版)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2389 思路:纯裸的一个最大匹配题,不过悲摧的是以前一直用的dfs版一直过不了,TLE无数次啊,然后改成 ...

  7. hdu 3729 I'm Telling the Truth(二分匹配_ 匈牙利算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3729 I'm Telling the Truth Time Limit: 2000/1000 MS ( ...

  8. hdu 4619 最大匹配问题

    思路:把所有涉及到的点按(x+y)的奇偶分成两部分点,对所有的1*2的骨牌,都有(x+y)为偶数的建到奇数的边.求一次最大匹配,就是答案. #include<iostream> #incl ...

  9. HDU 2063 最大匹配的基础题

    中文题,题目大意不说了. 思路:就是寻找最大匹配,最大匹配就是每次找增广路,如果存在增广,那就把增广路上面的边全部都翻转即可.这样说明能多匹配一个,+1即可. //看看会不会爆int!数组会不会少了一 ...

随机推荐

  1. 【转】虚拟化(三):vsphere套件的安装注意及使用

    vsphere套件里面主要的组件有esxi.vcenter server .vsphere client和vsphere web client. vcenter做为vsphere套件的核心管理成员之一 ...

  2. Layui 行点击追加元素效果

    /** * 单击事件 * @param obj */var dom;var state;WarningIllegalIntime.onRowClick=function(obj) { console. ...

  3. 38.mapping小例子

    主要知识点 初步了解mapping     一,准备数据 插入几条数据,让es自动为我们建立一个索引     PUT /website/article/1 { "post_date" ...

  4. apache下部署showdoc

    1. 安装apache2服务器sudo apt-get install apache2 2. 安装php环境 sudo apt-get install php7.1 libapache2-mod-ph ...

  5. vue cli 平稳升级webapck4

    webpack4 released 已经有一段时间了,插件系统趋于平稳,适逢对webpack3的打包速度很不满意,因此决定将当前在做的项目进行升级,正好也实践一下webpack4. 新特性 0配置 应 ...

  6. python第八周:socket网络编程

    1.socket网络编程 1.1概念: 网络套接字是跨计算机网络的连接的端点.今天,计算机之间的大多数通信都基于互联网协议;因此大多数网络套接字都是Internet套接字.更准确地说,套接字是一个句柄 ...

  7. 洛谷 P1640 BZOJ 1854 [SCOI2010]连续攻击游戏

    题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备 ...

  8. Phone List POJ 3630 Trie Tree 字典树

    Phone List Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 29416   Accepted: 8774 Descr ...

  9. 【SQLSERVER】MD5注意事项

    sql中使用MD5加密是很常见的事情,但是不知道注意点的人还是会即便是拷贝网络上的写法也是会出现错误的. 举个例子简单说明: 由上图我们可以发现相同的字符串但是得到的MD5加密的字符却是不相同的,那么 ...

  10. Fitnesse安装

    Fitnesse安装比较简单 1.确保机器上已经安装了java环境