(二分 網路流)Optimal Milking

2021-09-18 05:06:35 字數 988 閱讀 2389

題意為n個奶牛站,m頭奶牛,每個奶牛站的奶牛上限k;給出奶牛站和奶牛對其他實體的距離,距離為0即為兩個實體無路徑,求出所有奶牛到奶牛站中走的最遠的奶牛的最遠距離的最小值

最大中的最小問題,可以二分。我們先用floyd處理出實體到實體之間的最近距離,二分這個最遠距離,建圖(兩實體距離小於等於二分值時才連邊)後跑出最大流量判斷是否為奶牛的數量

#include #include #include #include #include #include #include using namespace std;

const int maxn = 300;

const int inf = 0x3f3f3f3f;

int path[maxn][maxn];

struct edge

};struct dinic

void addedge(int from, int to, int cap)

bool bfs()}}

return vis[t];

}int dfs(int x, int a)

}return flow;

}int maxflow(int s, int t)

return flow;

}} dinic;

int n, m, k;

void floyd() }}

}bool solve(int x)

}for(int i = n + 1; i <= n + m; ++i) dinic.addedge(i, n + m + 1, 1);

return dinic.maxflow(0, n + m + 1) == m;

}int main()

}floyd();

int l = 0, r = 1000000;

while(l < r)

cout << l << endl;

}}

BZOJ 1305 二分 網路流

思路 建圖我根本沒有想到啊 我是不會告訴你我借鑑了一下題解的思路 把每個人拆成喜歡的和不喜歡的點 男 喜歡 向 男 不喜歡 連 邊權為k的邊 如果男喜歡女 那麼 男喜歡向 女喜歡 連 1 如果男 不喜歡女 那麼 男不喜歡 向 女不喜歡 連1 男 喜歡 向 男不喜歡 連k 女 不喜歡 向 女喜歡 連k...

UVA 12264 Risk (二分,網路流)

題意比較坑,移動完以後的士兵不能再次移動,不然樣例都過不了。最小值最大滿足決策單調性所以二分答案,跑網路流驗證是否可行。這種題重點在建圖,為了保證只移動一次,拆點,乙個入點乙個出點,到了出點的自然不能再次排程。不在邊界上的邊連一條容量為1的邊表示至少留乙個人,在邊界上的與t的連邊就設定成mid。其他...

Luogu P1401 城市 二分 網路流

p1401 城市 n 2 n 200 個城市,m 1 m 40000 條無向邊,你要找t 1 t 200 條從城市1到城市n的路,使得最長的邊的長度最小,邊不能重複用。第1行三個整數n,m,t用空格隔開。第2行到p 1行,每行包括三個整數ai,bi,li表示城市ai到城市bi之間有一條長度為li的道...