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. 20145305 《网络对抗》Web安全基础实践

    实践过程及结果截图 Phishing with XSS 在文本框里面写一个钓鱼网站代码就可以了 </form> <script> function hack(){ XSSIma ...

  2. 面向对象初调用:foolish 电梯

    本周我们完成的任务是傻瓜电梯的调度,对于那十分十分详细的指导书,我感觉想要说明白题目要求,是做不到的,所以就把指导书贴出来给大家看了,,由于在下还不会网页制作,只能通过百度网盘了,https://pa ...

  3. [c/c++]指针(1)

    指针算是一种特殊的变量,它存储的是一个内存地址,你既可以通过它来给制定内存地址赋值 (可能会被操作系统收回或者与其它程序冲突),又可以提高运行速度 First Step: 声明一个指针变量 int* ...

  4. ubuntu下交叉编译imagemagick

    环境:ubuntu16.04 交叉编译器版本号:4.8.3 在编译之前要编译以下其依赖的软件或库:freetype,libpng,libxml2,libtiff,libjpeg,zlib,graphv ...

  5. C# 给某个方法设定执行超时时间

    ManualResetEvent.WaitOne 方法 https://msdn.microsoft.com/en-us/library/system.threading.manualreseteve ...

  6. 【异常记录(九)】 System.Threading.ThreadAbortException: 正在中止线程

    报错如下: System.Threading.ThreadAbortException: Thread was being aborted. at System.Threading.Thread.Ab ...

  7. Intel微处理器学习笔记(三) 不可见寄存器

    参考资料: 1.  http://blog.chinaunix.net/uid-20797642-id-2495244.html 2.  http://www.techbulo.com/708.htm ...

  8. 下载liteide

    https://github.com/visualfc/liteide/releases/tag/x35.3

  9. 强大的Manage

    Queue和Pipe实现的数据共享方式只支持两种结构 Value 和 Array.Python中提供了强大的Manage专门用来做数据共享,其支持的类型非常多,包括: Value,Array,list ...

  10. ubuntu16.04, git 的配置

    1.下载git:sudo apt-get install git 2.生成公钥:ssh-keygen -t rsa -C  '你的邮箱'     ,不停回车即可 3. mkdir test cd te ...