博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Poj 3189 Steady Cow Assignment (多重匹配)
阅读量:5302 次
发布时间:2019-06-14

本文共 809 字,大约阅读时间需要 2 分钟。

题目链接:

  

题目描述:

  有n头奶牛,m个棚,每个奶牛对每个棚都有一个喜爱程度。当然啦,棚子也是有脾气的,并不是奶牛想住进来就住进来,超出棚子的最大容量了,棚子是拒绝的。现在要给每个奶牛安家,本宝宝是一个公正无私的人类,所以要找一个奶牛喜爱程度差值最小的方案(虽然这样大家的喜爱程度可能普遍偏低,因为绝对公平并不代表合理啊),问喜爱程度的区间最小为多大?

解题思路:

  每个棚子并不是住一个奶牛,所以是多重匹配咯。匹配的时候二分枚举喜爱程度的区间大小,根据区间大小来枚举区间的起点和终点,然后跑多重匹配判断是否合法即可。注意咯,求得是区间大小,并不是最大喜爱程度与最小喜爱程度的差值。还有啊,还有啊,数据读入的时候maps[i][j]并不是i_th奶牛对j_th棚子的喜爱值,而是i_th奶牛对maps[i][j]棚子的喜爱程度为j。

 

1 #include 
2 #include
3 #include
4 #include
5 using namespace std; 6 7 const int maxn = 1010; 8 int maps[maxn][22], vis[22], used[22][maxn]; 9 int link[22], limit[22], n, m, s, e, mid;10 bool Find (int u)11 {12 for (int i=1; i<=m; i++)13 {
//多重匹配14 if (!vis[i] && maps[u][i]

 

转载于:https://www.cnblogs.com/alihenaixiao/p/4709773.html

你可能感兴趣的文章
SQL SERVER 查看表是否存在
查看>>
关于easyUI实现自定义网格视图
查看>>
JAVA小知识点-Finally和Return的执行关系
查看>>
基站转经纬度
查看>>
构建ASP.NET网站十大必备工具
查看>>
a*寻路分析
查看>>
Android Activity的任务栈和四大启动模式
查看>>
table左边固定-底部横向滚动条-demo
查看>>
MySQL事件异常记录
查看>>
Redis 发布订阅
查看>>
Redis 事务
查看>>
中国创新教育交流会杂感
查看>>
逍遥笔记
查看>>
JSON 命令行工具
查看>>
博士生传给硕士生的经验
查看>>
ubuntu 查看软件包中的内容 (已经安装)
查看>>
iperf 一个测试网络吞吐的工具
查看>>
IOR and mdtest - measure parallel file system I/O performance at both the POSIX and MPI-IO level.
查看>>
文件系统测试工具整理
查看>>
好用的性能检测工具 - Glances
查看>>