NOI2006 最大獲利 洛谷P4174

2022-02-13 09:22:30 字數 2876 閱讀 8455

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

在前期市場調查和站址勘測之後,公司得到了一共 n 個可以作為通訊訊號中轉站的位址,而由於這些位址的地理位置差異,在不同的地方建造通訊中轉站需要投入的成本也是不一樣的,所幸在前期調查之後這些都是已知資料:建立第 i個通訊中轉站需要的成本為pip_ip

另外公司調查得出了所有期望中的使用者群,一共 m 個。關於第 i 個使用者群的資訊概括為aia_iabib_ibcic_iccic_icaia_iabib_ib

thu 集團的 cs&t 公司可以有選擇的建立一些中轉站(投入成本),為一些使用者提供服務並獲得收益(獲益之和)。那麼如何選擇最終建立的中轉站才能讓公司的淨獲利最大呢?(淨獲利 = 獲益之和 – 投入成本之和)

輸入格式:

輸入檔案中第一行有兩個正整數 n 和 m 。第二行中有 n 個整數描述每乙個通訊中轉站的建立成本,依次為p1,p2,…,pnp_1 , p_2 , …,p_np

以下 m 行,第(i + 2)行的三個數ai,bia_i , b_iacic_ic

所有變數的含義可以參見題目描述。

輸出格式:

你的程式只要向輸出檔案輸出乙個整數,表示公司可以得到的最大淨獲利。輸入樣例#1: 複製

5 5

1 2 3 4 5

1 2 3

2 3 4

1 3 3

1 4 2

4 5 3

輸出樣例#1: 複製

4
樣例:選擇建立 1、2、3 號中轉站,則需要投入成本 6,獲利為 10,因此得到最大收益 4。

很明顯,直接用網路流模板。

首先考慮如何建模型:

先建立超級源點(廢話), 然後連向每乙個中轉站,流量為成本 cost。 然後再從中轉站連向使用它的使用者,流量為inf (選擇不影響**,因此流量無限大)。最後從使用者流向匯點,

流量為獲利gain。

接著,算出所有使用者gain的總值,減掉最小割(最大流)即可。

so, why?

首先先看我們需要計算的是什麼: 總獲利 - 總成本。

對於虧本使用者,其gain 小於 cost, 從其流出的流量肯定 <= gain。因此我們將這部分剪掉,相當於收益為0.

對於賺錢使用者,其gain 大於 cost, 從其流出的流量肯定 <= cost。因此我們將這部分剪掉,相當於剪掉了cost,即為實際利潤。

因此,建圖完成。當前弧優化(不能忘,否則t掉)+ dicnic 板子。 (當然,用spfa的最小費用最大流版本也能跑,

設單位費用為1即可,但是速度好像更慢,記憶體更大)。那為什麼還用,霧。

#include using

namespace

std;

#define n 500010

#define ll long long

#define inf (~0u>>1)

#define isdigit(c) ((c)>='0'&&(c)<='9')

//inline

intread()

while

(isdigit(c))

return x *s;

}struct

nodet[n];

intf[n];

intht, s;

intdeth[n], cur[n];

intn, m;

int bian = -1;//

全部從-1開始

void

addedge(ll u, ll v,ll w)

inline

void add(ll u, ll v,ll w)

queue

q; bool bfs(int s, int

ht) }

}return deth[ht] != 0;}

ll dfs(

int now,int

dist)

}}

return0;

} ll dicnic()

return

ans;

}int

main()

ll ans = 0

;

intto1, to2, temp;

for(int i = 1;i <= m; i++)

s = 0, ht = n + m + 1

; ans -= dicnic();//

減掉屆不到的使用者和屆到的中轉站

printf("

%lld\n

", ans);

return0;

}

典型的腦子題,動手簡單動腦難

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 ...