有n
nn頭牛和m
mm個牛棚,每頭牛有自己第1喜歡,第2喜歡……第m
mm喜歡的牛棚(開心度分別為m,m
−1,m
−2……
1m,m-1,m-2……1
m,m−1,
m−2…
…1),然後讀入m
mm個數表示第i
ii個牛棚最多可以進多少頭牛,現在讓所有牛都進入到牛棚內,問最開心的牛和最傷心的牛開心度之差最小是多少
6 4
1 2 3 4
2 3 1 4
4 2 3 1
3 1 2 4
1 3 4 2
1 4 2 3
2 1 3 2
2
每頭奶牛都能被安排進她的第一或第二喜歡的牛棚。下面給出一種合理的分配方案:奶牛1和奶牛5住入牛棚1,牛棚2由奶牛2獨佔,奶牛4住進牛棚3,剩下的奶牛3和奶牛6安排到牛棚4。
先二分列舉答案,然後列舉每乙個區間,接下來用最大流求二分圖的匹配即可
#
include
#include
#include
#include
#include
#define
lllong
long
using
namespace std;
int n, m, l, r, mid, sum, s, t, tot, b[50]
, head[
2000
], dep[
2000
], v[
2100][
50];const
int inf =
1<<29;
struct
reca[
40500];
queue<
int> d;
void
add(
int x,
int y,
int z)
bool
bfs()}
return
false;}
intdinic
(int x,
int flow)
return rest;
}booljs(
int x)
sum =0;
while
(bfs()
)//找增廣路
sum +=
dinic
(s, inf)
;//流
if(sum == n)
return
true
;//可以滿足
}return
false;}
intmain()
printf
("%d"
, l)
;return0;
}
bzoj 工作安排(最小費用最大流)
裸的最小費用最大流 思路是弄乙個原點,弄乙個會點,將原點連上物品容量為c i 費用為零,將物品和人按a陣列的關係連起來,容量為inf,花費為零,然後將人和會點連起來容量為他 做幾件物品,也就是ss j ss j 1 花費為他做這幾件的憤怒值,再跑最大流最小費用演算法就行了 複製 using name...
最大流學習筆記(1)
1流網路。流網路g v,e 是乙個有向圖,每條邊 u,v in e 有乙個非負容量值 c u,v geq 0 如果 u,v notin e,c u,v 0 另外有乙個源節點s和匯點t。2流。g中的流是乙個實值函式 f v times v rightarrow r 滿足 1 容量限制 對所有的 u,v...
最小費用最大流 JZOJ 4802 探險計畫
description 這一天,hnsdfz資訊組的眾人決定上岳麓山玩.岳麓山上的可以探險的地方非常多,而資訊組的oier們給每乙個地方都設定了乙個危險值,代表探險這個景點需要承擔的危險,而整個岳麓山可以抽象為由n行數字組成的數字梯形.而梯形頂端有m個數字,在每個數字處可以往左上或右上移動 i,j ...