bzoj1305 網路流最大流
分析:建立源點和匯點,將男孩分為喜歡點和不喜歡點,每個男孩喜歡點跟源點連線,權值為要求的答案,女孩跟匯點連線,權值為要求的答案;男孩的喜歡點和男孩的不喜歡點鏈結,權值為k,女孩的喜歡點和女孩的不喜歡點鏈結,權值為k;男孩跟喜歡的女孩連線,權值為1,同樣男孩不喜歡的女孩鏈結,權值為1.建完圖後二分查詢最大答案,用dinic跑最大流。
網路流最難的部分是建圖,圖建好了,問題就差不多解決了。
#include using namespace std;
const int n = 250;
int n, k, st, ed, cnt;
struct nodeedge[n * n];
int fir[n], deep[n];
char s[51][51];
inline void add(int u, int v, int w); fir[u] = cnt;
edge[++cnt] = (node); fir[v] = cnt;
}inline int bfs()}}
// for(int i = 0; i <= 4 * n + 1; i++)
// printf("\n");
return deep[ed];
}inline int dfs(int u, int fl)
}if(!f) deep[u] = -2;
return f;
}inline int dinic()
}return ans;
}//0 源點
//1~n 男孩的喜歡點
//n+1~2*n 男孩的不喜歡點
//2*n+1~3*n 女孩的喜歡點
//3*n+1~4*n 女孩的不喜歡點
//4*n+1 匯點
inline void built(int mid)
for(int i = 1; i <= n; i++)
}}int main()
int l = 1, r = n;
st = 0, ed = 4 * n + 1;
while(l <= r)
cout<
posted on 2019-02-19 10:05收藏
BZOJ 1305 二分 網路流
思路 建圖我根本沒有想到啊 我是不會告訴你我借鑑了一下題解的思路 把每個人拆成喜歡的和不喜歡的點 男 喜歡 向 男 不喜歡 連 邊權為k的邊 如果男喜歡女 那麼 男喜歡向 女喜歡 連 1 如果男 不喜歡女 那麼 男不喜歡 向 女不喜歡 連1 男 喜歡 向 男不喜歡 連k 女 不喜歡 向 女喜歡 連k...
bzoj 1834 網路流(最大流 費用流)
題意 n個點,m條無向邊,每條邊有乙個容量和擴容費用 容量擴大1的費用 2個詢問 1 不擴容下的1 n最大流 2 將最大流增加k的最小費用 強行湊出的網路流經典題麼 23333 對於第一問,裸跑最大流即可 第二問的建圖還是很不錯的,一開始認為,應該重新建邊,容量為k,費用是給題目給的。but,too...
網路流入門 bzoj1305
當初以為網路流是金牌題,從來都沒接觸過,後來才知道原來網路流只是乙個模板,真正難的是構圖問題,而且如果一眼看出是模板題的話只要能構出來圖問題就不大,大家的dinic模板都差不多。來一道簡單的構圖問題吧。description 一次舞會有n個男孩和n個女孩。每首曲子開始時,所有男孩和女孩恰好配成n對跳...