最大流 牛棚安排(jzoj 1259)

2021-10-02 05:30:11 字數 1479 閱讀 3002

有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 ...