題目傳送門
給出 \(n\) 個使用者,\(m\) 個基站,每個使用者的需求為用 \(a,b\) 兩個基站,會產生 \(c\) 的收益。修基站也需要花費。問最大收益。
\(n\le 5000,m\le 50000\)
這個東西要用乙個叫做最大權閉合子圖的東西。大概意思就是求解,對於乙個圖,每個點有點權,你選了乙個點則它的後繼都必須選,問選出來的點權值之和最大是多少。對於這個問題我們可以最小割來做,\(s\) 往所有點權為正的點連,流量為點權,所有點權為負的點往 \(t\) 連,流量為點權絕對值。原圖上的邊流量改為 \(\infty\)。然後答案就是所有邊權為正的權值之和-最小割。
這個模型的含義就是:
對於 \(s\) 連向的點,如果割了這個邊,相同於不選。
對於連向 \(t\) 的點,如果割了這個邊,相當於選。
正確性和最優性應該顯然,應該每個方案都與原圖上的方案一一對應。
對於這個點,我們可以直接使用者連向基站就好了,使用者點權為收益,基站點權為-花費。然後直接套用上面的最大權閉合子圖即可。
#include using namespace std;
#define int register int
#define inf 0x3f3f3f3f
#define maxm 500005
#define maxn 60005
template void read (t &x)
template void read (t &x,args& ... args)
template void write (t x)
int n,m,p[maxn];
struct edgee[maxm];
int toop = 1,s,t,dep[maxn],cur[maxn],head[maxn];
void add_edge (int u,int v,int w),head[u] = toop;
e[++ toop] = edge ,head[v] = toop;
}bool bfs ()
} return dep[t];
}int dfs (int u,int flow)
if (!flow) dep[u] = 0;
return ans;
}int mincut ()
return res;
}signed main()
網路流 最大獲利
time limit 5 sec memory limit 64 mb submit 760 solved 377 submit status discuss 新的技術正衝擊著手機通訊市場,對於各大運營商來說,這既是機遇,更是挑戰。thu集團旗下的cs t通訊公司在新一代通訊技術血戰的前夜,需要做太...
NOI 06 最大獲利
新的技術正衝擊著手機通訊市場,對於各大運營商來說,這既是機遇,更是挑戰。thu 集團旗下的cs t 通訊公司在新一代通訊技術血戰的前夜,需要做太多的準備工作,僅就站址選擇一項,就需要完成前期市場研究 站址勘測 最優化等專案。在前期市場調查和站址勘測之後,公司得到了一共n 個可以作為通訊訊號中轉站的位...
BZOJ 1497, 最大獲利
傳送門 選擇合理方案新建基站,滿足部分使用者群需要,求最大獲利 淨獲利 獲益之和 投入成本之和 注意到類似於有向無環圖的性質,套用最小割模型中的最大權閉合圖即可。include include const int inf 0u 2,v 55005,e 320005 int n,m,s,t,x,y,z...