DES: 就是说对每个人都给你一个区间。但一个人只匹配一个数。问你满足匹配的人的序号字典序最大时的最大匹配是什么。

前几天刚做的UVALive 6322...当然是不一样的...那个要求的最大匹配的个数...求V2的最小字典序...这个呢...就是最大匹配中V1字典序最小是多少...(已晕菜)

大概理解了算法工作流程...对每一个V1中的位置...寻找匹配...直到找不到增广路算法结束...先匹配谁就可以先满足它的匹配咯...(是吗...)

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std; int n;
int g[][];
int vis[];
int link[];
int m;
int minn, maxx; int dfs(int x)
{
for (int y=minn; y<=maxx; ++y)
{
if (!vis[y] && g[x][y])
{
vis[y] = ;
if (link[y] == || dfs(link[y]))
{
link[y] = x;
return ;
}
}
}
return ;
} void search()
{
for (int x=n; x>=; --x)
{
memset(vis, , sizeof(vis));
if (dfs(x)) m++;
}
} int main()
{
int t;
cin >> t;
while(t--)
{
cin >> n;
m = ;
memset(g, , sizeof(g));
memset(vis, , sizeof(vis));
memset(link, , sizeof(link));
minn = , maxx = -; for (int i=; i<=n; ++i)
{
int x, y;
cin >> x >> y;
if (minn > x) minn = x;
if (maxx < y) maxx = y;
for (int j=x; j<=y; ++j)
{
g[i][j] = ;
}
}
search();
cout << m << endl;
int ans[];
memset(ans, , sizeof(ans));
int cnt = ; for (int x=minn; x<=maxx; ++x)
{
if (link[x] != )
{
ans[cnt++] = link[x];
}
}
sort(ans, ans+cnt);
for (int i=; i<cnt; ++i)
{
if (i != ) cout << ' ';
cout << ans[i];
}
cout << endl;
}
return ;
}

LOoK

HDU 3279 二分图最大匹配的更多相关文章

  1. hdu 1281 二分图最大匹配

    对N个可以放棋子的点(X1,Y1),(x2,Y2)......(Xn,Yn);我们把它竖着排看看~(当然X1可以对多个点~) X1   Y1 X2   Y2 X3   Y3 ..... Xn   Yn ...

  2. HDU - 2444 二分图最大匹配 之 判断二分图+匈牙利算法

    题意:第一行给出数字n个学生,m条关系,关系表示a与b认识,判断给定数据是否可以构成二分图,如果可以,要两个互相认识的人住一个房间,问最大匹配数(也就是房间需要的最小数量) 思路:要看是否可以构成二分 ...

  3. hdu 4619 二分图最大匹配 ——最大独立集

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4619 #include <cstdio> #include <cmath> # ...

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

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

  5. hdu 4185 二分图最大匹配

    Oil Skimming Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  6. HDU:过山车(二分图最大匹配)

    http://acm.hdu.edu.cn/showproblem.php?pid=2063 题意:有m个男,n个女,和 k 条边,求有多少对男女可以搭配. 思路:裸的二分图最大匹配,匈牙利算法. 枚 ...

  7. [HDU] 2063 过山车(二分图最大匹配)

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2063 女生为X集合,男生为Y集合,求二分图最大匹配数即可. #include<cstdio> ...

  8. HDU 3829 Cat VS Dog / NBUT 1305 Cat VS Dog(二分图最大匹配)

    HDU 3829 Cat VS Dog / NBUT 1305 Cat VS Dog(二分图最大匹配) Description The zoo have N cats and M dogs, toda ...

  9. HDU 2255 奔小康赚大钱(带权二分图最大匹配)

    HDU 2255 奔小康赚大钱(带权二分图最大匹配) Description 传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房子. 这可是一件大事,关系到人民的住房问题啊 ...

随机推荐

  1. Linux设备驱动中的IO模型---阻塞和非阻塞IO【转】

    在前面学习网络编程时,曾经学过I/O模型 Linux 系统应用编程——网络编程(I/O模型),下面学习一下I/O模型在设备驱动中的应用. 回顾一下在Unix/Linux下共有五种I/O模型,分别是: ...

  2. js与jquery对象的互转

    //dom对象 var odiv = document.getElementById('box'); //dom对象转化成JQ对象, 在通过原生的方法获取到元素后,给它加上$() //$(odiv). ...

  3. UVa 1025 城市里的间谍

    https://vjudge.net/problem/UVA-1025 题意:一个间谍要从第一个车站到第n个车站去会见另一个,在是期间有n个车站,有来回的车站,让你在时间T内时到达n,并且等车时间最短 ...

  4. UVa 714 抄书(贪心+二分)

    https://vjudge.net/problem/UVA-714 题意:把一个包含m个正整数的序列划分成k个非空的连续子序列,使得每个正整数恰好属于一个序列.设第i个序列的各数之和为S(i),你的 ...

  5. LINUX设备驱动模型之class

    转自 https://blog.csdn.net/qq_20678703/article/details/52754661 1.LINUX设备驱动模型中的bus.device.driver,.其中bu ...

  6. hdu 5671 Matrix 标记。。。有点晕

    Matrix Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Problem ...

  7. python 线性查找

    import random val= data=[,,,,] : find= val=int(input('请输入查找键值(1-9),输入-1离开:')) for i in data: if i==v ...

  8. c++ 算法 栅格中两点之间连线

    屏幕划线,通过平面坐标系实现,基本组成是一个一个的点,起点为A,终点为B 本文的算法,可以实现平面栅格中,指定的A,B两点之间进行连线(代码中仅打印了两点间需要画出的坐标点) #include < ...

  9. 【转】libxml2 如何获得某个节点的所有信息

    网址:http://bbs.csdn.net/topics/380115580 顶楼: 我的需求是这样的,我使用libxml2从内存中解析一个xml文件,需要修改某个节点下的一个子节点,修改完成之后, ...

  10. RabbitMQ入门_08_所谓的点对点与发布订阅模型

    A. JMS 模型 JMS 中定义了点对点和发布订阅两种消息模型,原来以为 AMQP 协议中 direct Exchange 对应点对点模型,topic Exchange 对应发布订阅模型,fanou ...