poj3189Steady Cow Assignment
来源:互联网 发布:淘宝店铺封面象数多少 编辑:程序博客网 时间:2024/05/29 14:03
题意:有n头牛,b个牛棚,每头牛心目中对牛棚都有个满意度,而每个牛棚是有容量上限的。问将这些牛全部安排好牛棚后,求其中的最低满意度与最高满意度的差,使得这个差值最小。。。
没有二分,TLE成傻逼。。。。。。。
对于匹配来说就是个多重匹配。
但是建图的话,开始枚举的范围[i,j],然后成傻逼,这里的枚举是n^2的,而且每次枚举后都要来遍建图与匹配,,,,,时间是爆炸的。。。
后面两个是不能省的,只能是想办法减少前面的范围枚举方法,枚举范围长度再枚举区间。。。
/*****************************************Author :Crazy_AC(JamesQi)Time :2015File Name :*****************************************/// #pragma comment(linker, "/STACK:1024000000,1024000000")#include <iostream>#include <algorithm>#include <iomanip>#include <sstream>#include <string>#include <stack>#include <queue>#include <deque>#include <vector>#include <map>#include <set>#include <cstdio>#include <cstring>#include <cmath>#include <cstdlib>#include <climits>using namespace std;#define MEM(x,y) memset(x, y,sizeof x)#define pk push_backtypedef long long LL;typedef unsigned long long ULL;typedef pair<int,int> ii;typedef pair<ii,int> iii;const double eps = 1e-10;const int inf = 1 << 30;const int INF = 0x3f3f3f3f;const int MOD = 1e9 + 7;const int N = 1010;int n, b, maxR;int g[N][25];int top[25];int num[N];int cy[25][N];bool vis[N];bool dfs(int u,int l) {for (int i = l;i <= l + maxR - 1;++i) {if (!vis[g[u][i]]) {vis[g[u][i]] = true;if (num[g[u][i]] < top[g[u][i]]) {cy[g[u][i]][++num[g[u][i]]] = u;return true;}for (int j = 1;j <= num[g[u][i]];++j) {if (dfs(cy[g[u][i]][j], l)) {cy[g[u][i]][j] = u;return true;}}}}return false;}int hungary() {for (int l = 1;l <= b - maxR + 1;++l) {int ans = 0;memset(num, 0,sizeof num);for (int i = 1;i <= n;++i) {memset(vis, false,sizeof vis);if (dfs(i, l)) ans++;}if (ans == n) return 1;}return 0;}int Binary() {int ans = 0;int low = 1,high = b;while(low <= high) {int mid = (low + high) >> 1;maxR = mid;if (hungary()) {ans = mid;high = mid - 1;}else low = mid + 1;}return ans;}int main(){// freopen("in.txt","r",stdin);// freopen("out.txt","w",stdout);while(~scanf("%d%d",&n,&b)) {for (int i = 1;i <= n;++i) {for (int j = 1;j <= b;++j) {scanf("%d",&g[i][j]);}}for (int i = 1;i <= b;++i)scanf("%d",&top[i]);printf("%d\n", Binary());}return 0;}
0 0
- poj3189Steady Cow Assignment
- poj3189Steady Cow Assignment【二分图多重匹配】
- POJ3189-Steady Cow Assignment
- POJ3189 Steady Cow Assignment
- Steady Cow Assignment
- POJ3189 Steady Cow Assignment
- 3189 Steady Cow Assignment //MaxMatch
- POJ 3189 Steady Cow Assignment
- POJ 3189 Steady Cow Assignment
- Steady Cow Assignment POJ - 3189
- POJ 3189 Steady Cow Assignment【网络流】
- 解题报告 之 POJ3189 Steady Cow Assignment
- POJ 3189 Steady Cow Assignment 笔记
- POJ3189 Steady Cow Assignment 二分枚举+dinic最大流
- poj 3189 Steady Cow Assignment 枚举+网络流
- POJ 3189 Steady Cow Assignment 二分最大流
- POJ 3189 Steady Cow Assignment(二分+多重匹配)
- 【POJ】3189 Steady Cow Assignment 二分最大流
- 外部系统接口稽核经验谈
- 树莓派OSMC如何设置成中文
- AVCaptureDevice一些设置
- LeetCode 237 删除单链表中某一个结点
- 从头认识Spring-1.13 注入properties与null
- poj3189Steady Cow Assignment
- 程序员努力提升自己,循序渐进学编程
- POJ3620
- c++ 线程并发、任务队列、异步 任务封装和分发 lambda与任务 boost
- android-Creating Multiple APKs for Different Screen Sizes,Creating Multiple APKs for Different GL Te
- 创建一个自定义类加载器实现class文件(字节码文件)的加密解密的实例
- 成为优秀程序员的10个有效方法-要有自己的认识
- BUAA:JY的题目【水】
- 2015年终总结