這題是一道最大權閉合圖的經典難題(by rose_max)
upd:不誤人子弟了,這就是乙個裸的最小割啊。。。。。
然後構圖的方式就是把作物值分成ab集合,乙個在st一邊,乙個在ed一邊,st連作物流量為a[i],作物流ed流量為b[i],對於每乙個組合,新建兩個點,乙個被st流流量為c1,乙個流ed流量為c2,然後第乙個流去集合中的作物,作物流回第二個點,流量無限。
sum-最小割
#include#include#include
#include
#include
#include
using
namespace
std;
intn,sum,st,ed;
struct
node
a[2100000];int len,last[110000
];void ins(int x,int y,int
c)void
composition()}//
------composition--------
int h[110000],list[110000
];bool
bt_h()
}head++;
}if(h[ed]>0)return
true
;
return
false;}
int findflow(int x,int
f) }
if(s==0)h[x]=0
;
returns;}
//---------網路流----------
intmain()
printf(
"%d\n
",sum-ans);
return0;
}
BZOJ3438 小M的作物
bzoj3438 小m的作物 小m在mc裡開闢了兩塊巨大的耕地a和b 你可以認為容量是無窮 現在,小p有n中作物的種子,每種作物的種子有1個 就是可以種一棵作物 用1.n編號 現在,第i種作物種植在a中種植可以獲得ai的收益,在b中種植可以獲得bi的收益,而且,現在還有這麼一種神奇的現象,就是某些作...
bzoj3438 小M的作物
題目鏈結 先考慮沒有額外收益的時候怎麼做。從 s 向第 i 點連一條容量為 a i 邊,表示種在 a 中的收益。從第 i 個點向 t 連一條容量為 b i 的邊,表示種在 b 中的收益。然後求出來最小割,用總收益減去即可。完成之後如下圖 然後考慮如何處理額外收益 對於每乙個額外的收益,我們先新建乙個...
BZOJ3438 小M的作物
time limit 10 sec memory limit 256 mb submit 247 solved 124 submit status 背景小m還是個特麼喜歡玩mc的孩紙。描述小m在mc裡開闢了兩塊巨大的耕地a和b 你可以認為容量是無窮 現在,小p有n中作物的種子,每種作物的種子有1個 ...