NKOI 1513 穩定的奶牛分配

2021-07-15 15:22:00 字數 2022 閱讀 2192

穩定的奶牛分配

time limit:10000ms  memory limit:65536k

total submit:53 accepted:23 

case time limit:1000ms

description

農夫約翰有n(1<=n<=1000)只奶牛,每只奶牛住在b(1<=b<=20)個奶牛棚中的乙個。當然,奶牛棚的容量有限。有些奶牛對它現在住的奶牛棚很滿意,有些就不太滿意了。 

農夫約翰想要重新安排這些奶牛,使得奶牛的滿意度盡可能相同,儘管有可能這意味者所有的奶牛都不喜歡新分配的奶牛棚。 

每只奶牛都按順序給出她喜歡的奶牛棚。在某個分配方案中,乙隻奶牛的滿意度等於她對她的奶牛棚的評價等級。你的工作是找出一種分配方案使得沒有奶牛棚超出它的容量,而且奶牛給分配到的奶牛棚的評價等級的相對範圍(即分配到的等級最高的奶牛棚和等級最低的奶牛棚之間的差值)盡可能的小。 

input

第1行:兩個用空格隔開的整數,n和b 

第2..n+1行:每一行都有b個用空格隔開的正整數,它們恰好是1到b的乙個排列。第i+1行的第乙個整數是第i只奶牛的首選牛棚的編號,該行的第二個整數是第i只奶牛的第二選擇,等等。 

第n+2行:b個用空格隔開的整數,分別表示這b個奶牛棚的容量。這些數的和保證至少為n。 

output

乙個整數,被分配到的牛棚等級的最小相對差值,輸出得到該相對差時所包含的不同等級的牛棚個數。 

sample input

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

sample output

2

hint

每個奶牛都被安排在它的第一選擇或第二選擇:1號牛棚安排1號奶牛和5號奶牛,2號牛棚安排2號奶牛,3號牛棚安排4號奶牛,4號牛棚安排3號奶牛和6號奶牛。 

輸出樣例 

表示得到最小相對差為1,這時奶牛們入住進了兩種不同等級的牛棚

source

網路流 usaco feb06 gold

這道題我們很容易就能想到構圖的方法:

源點連線每乙個奶牛,權值為1,每乙個奶牛連線每乙個牛棚,權值為1,牛棚連線匯點,權值為牛棚容量。

那麼我們怎麼得到答案呢?

首先先列舉答案(這裡可以用二分也可以直接迴圈列舉),然後再列舉牛棚的最高等級(我們設1為最高等級)

最後對於每乙個列舉的物件跑一次sap就可以了

#include#include#includeusing namespace std;

const int inf=1e9,maxn=2005;

int n,b,op,ed,m=2,p[maxn],cow[maxn][maxn],g[maxn][maxn];

int dis[maxn],vd[maxn];

void _read(int &xx)

int dfs(int u,int flow)

if(dis[op]>=ed)return delta;

vd[dis[u]]--;

if(vd[dis[u]]==0)dis[op]=ed;

dis[u]++;

vd[dis[u]]++;

return delta;

}int main(){

int i,j,k,ans;

scanf("%d%d",&n,&b);

op=n+b+1,ed=op+1;

for(i=1;i<=n;i++)

for(j=1;j<=b;j++)

_read(cow[i][j]);

for(i=1;i<=b;i++)_read(p[i]);

for(ans=0;ans

題解 奶牛的聚會(三分)

三分思路詳解 題目描述 農曆新年馬上就要到了,奶牛們計畫舉辦一次聚會慶祝新年的到來。但是,奶牛們並不喜歡走太遠的路,這會給他們的聚會帶來消極情緒,當一頭奶牛的消極指數為wi,他參加聚會所需行走的距離為si,那麼他就會給聚會帶來si3 wi的消極情緒。所有奶牛所在位置都在一條直線上,已知所有奶牛的座標...

進擊的奶牛(二分查詢)

farmer john建造了乙個有n 2 n 100,000 個隔間的牛棚,這些隔間分布在一條直線上,座標是x1,xn 0 xi 1,000,000,000 他的c 2 c n 頭牛不滿於隔間的位置分布,它們為牛棚裡其他的牛的存在而憤怒。為了防止牛之間的互相打鬥,farmer john想把這些牛安置...

進擊的奶牛 二分用法

題目描述 farmer john建造了乙個有n 2 n 100,000 個隔間的牛棚,這些隔間分布在一條直線上,座標是x1,xn 0 xi 1,000,000,000 他的c 2 c n 頭牛不滿於隔間的位置分布,它們為牛棚裡其他的牛的存在而憤怒。為了防止牛之間的互相打鬥,farmer john想把...