網路流 最大獲利

2021-06-03 12:01:43 字數 2462 閱讀 4868

time limit: 5 sec  

memory limit: 64 mb

submit: 760  

solved: 377 [

submit][

status][

discuss]

新的技術正衝擊著手機通訊市場,對於各大運營商來說,這既是機遇,更是挑戰。thu集團旗下的cs&t通訊公司在新一代通訊技術血戰的前夜,需要做太多的準備工作,僅就站址選擇一項,就需要完成前期市場研究、站址勘測、最優化等專案。 在前期市場調查和站址勘測之後,公司得到了一共n個可以作為通訊訊號中轉站的位址,而由於這些位址的地理位置差異,在不同的地方建造通訊中轉站需要投入的成本也是不一樣的,所幸在前期調查之後這些都是已知資料:建立第i個通訊中轉站需要的成本為pi(1≤i≤n)。 另外公司調查得出了所有期望中的使用者群,一共m個。關於第i個使用者群的資訊概括為ai, bi和ci:這些使用者會使用中轉站ai和中轉站bi進行通訊,公司可以獲益ci。(1≤i≤m, 1≤ai, bi≤n) thu集團的cs&t公司可以有選擇的建立一些中轉站(投入成本),為一些使用者提供服務並獲得收益(獲益之和)。那麼如何選擇最終建立的中轉站才能讓公司的淨獲利最大呢?(淨獲利 = 獲益之和 - 投入成本之和)

輸入檔案中第一行有兩個正整數n和m 。 第二行中有n個整數描述每乙個通訊中轉站的建立成本,依次為p1, p2, …, pn 。 以下m行,第(i + 2)行的三個數ai, bi和ci描述第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。

【評分方法】

本題沒有部分分,你的程式的輸出只有和我們的答案完全一致才能獲得滿分,否則不得分。

【資料規模和約定】

80%的資料中:n≤200,m≤1 000。

100%的資料中:n≤5 000,m≤50 000,0≤ci≤100,0≤pi≤100。

這道題很難呀,老師講了乙個定理,也只會用,不曉得原理是什麼。明天來補上證明

最大流就等於最小切割。。

怎麼怎麼的就看出來這是一道網路流。。

而且ans = c總 - c未 - p已選 = c總 - (c未+p已選)

(c未+p已選)=最小割=最大流

所以ans = c總 - 最大流

把圖分成二部圖,一邊是所有的中轉站,右邊是所有的使用者。

超級源向所有中轉站建邊,流量限制為成本c[i]。

所有使用者向超級匯建邊,流量限制為利潤p[i]。

有邊相連的中轉站和使用者之間建邊,流量限制為正無窮。

然後就比較裸的網路流了。

要注意本題範圍比較大,因次必須用鍊錶(wjj用的前向星速度很慢)

因為用了鍊錶,所以還要注意建反向邊,還要標記一下。(我用的乙個b指標)

把size設為超級源,size-1設為超級匯比較簡單。

好久沒寫這麼工整漂亮的**了。

#include long size = 0;

long d[60000];

long vd[60000];

struct node

;const long inf = 0x7fff0000;

node* head[60000];

inline long min(long a,long b)

return b;

}void insert(long a,long b,long c)

long sap(long u,long flow)

long count = 0;

for (node* v=head[u];v!=0;v=v->next)}}

if (d[size] >= size)

vd[d[u]]--;

if(vd[d[u]]==0)

d[size] = size;

d[u]++;

vd[d[u]]++;

return count;

}int main()

long sum = 0;

long ans = 0;

for (long i=n+1;ib = head[i];

head[i]->b = head[a];

insert(b,i,inf);

insert(i,b,0);

head[b]->b = head[i];

head[i]->b = head[b];

insert(i,size-1,c);

insert(size-1,i,c);

head[i]->b = head[size-1];

head[size-1]->b = head[i];

sum += c;

}vd[0] = size;

while (d[size]

NOI2006最大獲利 網路流模型備忘

最大獲利 問題描述 新的技術正衝擊著手機通訊市場,對於各大運營商來說,這既是機遇,更是挑戰。thu 集團旗下的cs t 通訊公司在新一代通訊技術血戰的前夜,需要做太多的準備工作,僅就站址選擇一項,就需要完成前期市場研究 站址勘測 最優化等專案。在前期市場調查和站址勘測之後,公司得到了一共n 個可以作...

bzoj1497 網路流 最大獲利

description 新的技術正衝擊著手機通訊市場,對於各大運營商來說,這既是機遇,更是挑戰。thu集團旗下的cs t通訊公司在新一代通訊技術血戰的前夜,需要做太多的準備工作,僅就站址選擇一項,就需要完成前期市場研究 站址勘測 最優化等專案。在前期市場調查和站址勘測之後,公司得到了一共n個可以作為...

HOJ 2634 網路流 蘊含式最大獲利問題

參考 蘊含式最大獲利問題 include include include includeusing namespace std const int maxn 210,inf 0x3f3f3f3f struct isap edge int a,int b,int c,int d from a to b...