題目鏈結
新的技術正衝擊著手機通訊市場,對於各大運營商來說,這既是機遇,更是挑戰。thu 集團旗下的 cs&t 通訊公司在新一代通訊技術血戰的前夜,需要做太多的準備工作,僅就站址選擇一項,就需要完成前期市場研究、站址勘測、最優化等專案。
在前期市場調查和站址勘測之後,公司得到了一共\(n\)個可以作為通訊訊號中轉站的位址,而由於這些位址的地理位置差異,在不同的地方建造通訊中轉站需要投入的成本也是不一樣的,所幸在前期調查之後這些都是已知資料:建立第\(i\)個通訊中轉站需要的成本為\(p_i(1 \le i \le n)\)。
另外公司調查得出了所有期望中的使用者群,一共\(m\)個。關於第\(i\)個使用者群的資訊概括為\(a_i\),\(b_i\)和\(c_i\):這些使用者會使用中轉站\(a_i\)和中轉站\(b_i\)進行通訊,公司可以獲益\(c_i\)。\((1 \le i \le m, 1 \le a_i,b_i \le n)\)
thu 集團的 cs&t 公司可以有選擇的建立一些中轉站(投入成本),為一些使用者提供服務並獲得收益(獲益之和)。那麼如何選擇最終建立的中轉站才能讓公司的淨獲利最大呢?(淨獲利 = 獲益之和 – 投入成本之和)
輸入檔案中第一行有兩個正整數\(n\)和\(m\)。
第二行中有\(n\)個整數描述每乙個通訊中轉站的建立成本,依次為\(p_1,p_2,…,p_n\)。
以下\(m\)行,第\((i+2)\)行的三個數\(a_i,b_i\)和\(c_i\)描述第\(i\)個使用者群的資訊。
所有變數的含義可以參見題目描述。
你的程式只要向輸出檔案輸出乙個整數,表示公司可以得到的最大淨獲利。
5 51 2 3 4 5
1 2 3
2 3 4
1 3 3
1 4 2
4 5 3
4樣例:選擇建立\(1、2、3\)號中轉站,則需要投入成本$6,獲利為\(10\),因此得到最大收益\(4\)。
\(100\%\)的資料中:\(n \le 5000,m \le 50000,0 \le c_i \le 100,0 \le p_i \le 100\)。
#include#define inf 2000000000
using namespace std;
int n,m,x,y,z;
int ans,sum;
int t;
struct aap[310009];
int h[55009],len=1;
void add(int u,int v,int w)
int dis[55009],uu[55009],l,r;
bool bfs()
} }return dis[t]!=-1;
}int dfs(int u,int mx)
} return oo;
}int main()
for(int j=1;j<=m;j++)
while(bfs()) ans+=dfs(0,inf);
printf("%d",sum-ans);
return 0;
}
NOI2006 最大獲利
description 新的技術正衝擊著手機通訊市場,對於各大運營商來說,這既是機遇,更是挑戰。thu集團旗下的cs t通訊公司在新一代通訊技術血戰的前夜,需要做太多的準備工作,僅就站址選擇一項,就需要完成前期市場研究 站址勘測 最優化等專案。在前期市場調查和站址勘測之後,公司得到了一共n個可以作為...
NOI2006 最大獲利
有n個中轉站,每乙個中轉站修建需要耗費一定費用。有m個使用者人群,每個使用者人群要通話需要有a b 兩個中轉站,滿足這個使用者人群後會獲利p。問最大獲利是多少?有正權,有負權,還有依賴關係,決定就是你啦,最大權值閉合子圖!建模就不分析了,套路題目。luogu 4174 bzoj 1497 cogs ...
NOI2006 最大獲利
把使用者和中轉站分成兩類,就是乙個二分圖了。注意到我們選擇了乙個使用者群,就必須要選擇對應的中轉站來付出代價。這不就是乙個最大權閉合子圖嘛 直接上最小割即可 如下 include include include include include include define s 0 define t ...