BZOJ3511 土地劃分 最小割

2022-05-09 14:03:07 字數 2940 閱讀 4403

y國有n座城市,並且有m條雙向公路將這些城市連線起來,並且任意兩個城市至少有一條路徑可以互達。 

y國的國王去世之後,他的兩個兒子a和b都想成為新的國王,但他們都想讓這個國家更加安定,不會用武力解決問題。 

於是他們想將這個國家分成兩個小國家a國和b國。現在,a擁有1號城市,b擁有n號城市,其他的城市還尚未確定歸屬哪邊(劃分之後的國家內部城市可以不連通)。 

由於大家都想讓國家變得更好,而某些城市的人民願意國王的a兒子作為他們的領袖,而某些城市更看好b,而為了交通的便捷,如果劃分後的公路連線兩個同乙個國家的城市,那麼更利於城市之間的交流。於是大臣們設計了一種對土地劃分的評分機制,具體如下: 

1. 對於城市i,如果它劃分給a國,將得到va[i]的得分;劃分給b國,將得到vb[i]的得分。 

2. 對於一條公路i,如果它連線兩個a國的城市,將得到ea[i]的得分;連線兩個b國的城市,將得到eb[i]的得分;否則,這條公路將失去意義,將扣除ec[i]的得分。 

現請你找到最優的土地劃分,使得這種它的評分最高。 

第一行包含兩個整數n,m,含義如問題描述所示。 

接下來一行n-2個非負整數,表示va[2..n-1]。 

接下來一行n-2個非負整數,表示vb[2..n-1]。 

接下來m行,每行五個非負整數描述一條公路:x y ea[i] eb[i] ec[i],含義如問題描述所示。 

輸出有且僅有乙個整數,表示最高評分。 

3 3

8 9

1 2 2 6 2

2 3 8 5 7

1 3 9 4 1

11 【樣例說明】

a國僅有1號點,b國有2號和3號點。

評分=vb[2]+eb[2]-ec[1]-ec[3]=9+5-2-1=11。

【資料說明】 

資料點 n m 備註 

1-2 <=20 <=200 無 

3-4 <=5000 <=10000 va、vb、ea、eb均為0 

5-6 <=5000 <=10000 ec均為0 

7-10 <=10000 <=40000 無 

保證運算過程中及最終結果不超過32位帶符號整數型別的表示範圍

二者必取其一,這個很有最小割的意思,所以相當於將a國是源點,b國為匯點

對於乙個點$p_i$,設其分到a國的價值為$v_$,分到b國的價值為$v_$。

取a則無法取b,這就是最小割模型了。

那麼從源點連向$p_$一條有向邊,容量為$v_$,那麼從$p_i$向匯點一條有向邊,容量為$v_$,

這樣點的二選一就實現了,只需要用$\sum+v_}$減去最小割就可以啦。

下面是邊的三選一:(設一條邊連a國城市貢獻為$c_$,連b國城市貢獻為$c_$,連線兩個國家點懲罰為$c_$)

兩個點若都選a,那麼就需要割去這條邊連線b國兩個城市點貢獻。

選a相當於割去城市選b國點貢獻,那麼相當於在匯點端取消了流量。

那麼現在限制一下,要求其取消匯點端流量則必須取消這條邊流量。

那麼就相當於在原來兩個城市向匯點連邊處向匯點重新連邊。

由於兩個點都必須限制,那麼相當於在兩個點都向匯點連$\frac}$的邊。

同理從源點連向邊的兩端點$\frac}$的邊。

所以在答案上加上$\sum+c_}$最後減去最小割。

考慮懲罰條件。

此時為邊的兩端乙個割源,乙個割匯。

此時為了保證出現割,保留與匯點連邊端必須斷開所有與源點連邊。

所以此時最小割中一定存在$\frac}$,也就是這條邊存在時與源點的附加邊。

同理,最小割中也存在$\frac}$,這樣割下來的代價為$\frac}+\frac}$

但是我們期望其扣除的代價為$c_+c_+c_$,這就要求我們同時要割下一條代價為$\frac}+\frac}+c_$的邊。

可是這條邊應該加在**呢。

考慮什麼樣的邊一定被割掉,一定是當前存在的與源點連邊的點連向乙個與匯點有流量的點。

那麼就是在當前邊兩端對應的點間加一雙向邊,邊權為$\frac}+\frac}+c_$。

證明這樣做的可行性。

因為當兩端選同乙個國家時,中間的流量不會流向匯或不會與源有流量。

所以這條附加邊在兩端選同一國家時是不會存在流量的,更不會被割去。

所以建圖就是這樣了。

因為有係數$\frac$的存在,將所有邊權*2,最後/2,可以證明最後一定是整除的,沒有必要擔心。

全圖最小割就好了。

**:

1 #include2 #include3 #include4 #include5

const

int oo=0x3f3f3f3f;6

struct

pntp[100000

];11

struct

ente[1000000

];16

intcnt;

17int

n,m;

18int

s,t;

19 std::queueq;

20void ade(int f,int t,int

v)21

29bool bfs(void)30

51}52}

53return

false;54

}55int dfs(int x,int

fll)

5671}72

}73return0;

74}75int dinic(void)76

86return

ans;87}

88int

main()

89108

for(int i=2;i<=n-1;i++)

109117

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

118133 ans=(ans-dinic())>>1

;134 printf("

%d\n

",ans);

135return0;

136 }

BZOJ3511 土地劃分

一眼最小割 考慮劃為s集代表a國,劃為t集代表b國 建圖 s連每個點流量va,每個點連t流量vb 對於每條邊,兩個端點點之間連雙向邊流量ec 新建乙個點x,s連x流量ea,x連兩個端點流量inf 再新建乙個點y,兩個端點連y流量inf,y連t流量eb 認為1號點va inf,vb 0 n號點va 0...

BZOJ3511 土地劃分

給出n個點,m條邊,每個點有a和b兩種形態,一開始1為a,n為b 給出va i 和vb i 表示第i個點選擇a和b形態的價值 每條邊給出x,y,ea,eb,ec,表示如果x和y都為a,則獲得ea價值,如果都為b則獲得eb價值,否則會得到ec的費用 就是負價值 求出最大價值 神奇的最小割,太強了 建圖...

BZOJ 1497 最小割應用

題意 基站耗費成本,使用者獲得利益 前提是投入成本 求最大獲利 最小割的簡單應用,所有可能的收益 消耗的成本 失去的收益 無窮大邊表示衝突,最小割求括號內的範圍即可 include include include include include include include include inc...