BZOJ3438 小M的作物

2022-03-29 16:21:39 字數 1900 閱讀 9778

bzoj3438: 小m的作物

小m在mc裡開闢了兩塊巨大的耕地a和b(你可以認為容量是無窮),現在,小p有n中作物的種子,每種作物的種子有1個(就是可以種一棵作物)(用1...n編號),現在,第i種作物種植在a中種植可以獲得ai的收益,在b中種植可以獲得bi的收益,而且,現在還有這麼一種神奇的現象,就是某些作物共同種在一塊耕地中可以獲得額外的收益,小m找到了規則中共有m種作物組合,第i個組合中的作物共同種在a中可以獲得c1i的額外收益,共同總在b中可以獲得c2i的額外收益,所以,小m很快的算出了種植的最大收益,但是他想要考考你,你能回答他這個問題麼?

第一行包括乙個整數n

第二行包括n個整數,表示ai

第三行包括n個整數,表示bi

第四行包括乙個整數m接下來m行,對於接下來的第i行:第乙個整數ki,表示第i個作物組合中共有ki種作物,接下來兩個整數c1i,c2i,接下來ki個整數,表示該組合中的作物編號。

只有一行,包括乙個整數,表示最大收益

34 2 1

2 3 2

12 3 2 1 2

11樣例解釋a耕地種1,2,b耕地種3,收益4+2+3+2=11。

1<=k< n<= 1000,0 < m < = 1000 保證所有資料及結果不超過2*10^9。

一眼沒看出這是個啥。。。

那就簡化問題——如果沒有組合。

每一種作物只有一種選擇方式。

這是,匹配?

網路流!

將$a$作為源點$s$,$b$作為匯點$t$。

對於每種作物$x$,連邊:

$s->x$,流量為種在$a$的價值;

$x->t$,流量為種在$b$的價值。

然後跑最小割,也就是最大流,再用總費用減去最小割即可。

小問題解決,然後把那個鬼畜的組合加上。

我們可以將每個組合當做一種作物,然後連邊。

但是每個組合對於作物的限制怎麼辦?

沒事,我們可以這麼幹:

將每種組合$x$拆點成$x,x'$。

對於$x$,先連邊$s->x$,流量為該組合種在$a$的額外價值;再從$x$連邊到該組合中所有作物,流量均為$max$。

同理,對於$x'$,先連邊$x'->t$,流量為該組合種在$b$的額外價值;再從該組合中所有作物連邊到$x'$,流量均為$max$。

然後跑最小割,再用總費用減去最小割即可。

注意計算邊數的上限。

附**:

#include#include#include#include#define maxn 3010

#define maxm 4100000

#define max 2147483646

using namespace std;

int n,m,s,t,c=2,sum=0;

int val_a[maxn],val_b[maxn],head[maxn],deep[maxn];

struct edgea[maxm];

inline int read()

while(c>='0'&&c<='9')

return date*w;

}inline void add(int u,int v,int w)

bool bfs()

} }return false;

}int dfs(int x,int limit)

else deep[v]=-1;

} }return cost;

}int dinic()

void work()

void init()

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

m=read();

s=n+m*2+1;t=n+m*2+2;

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

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

int main()

bzoj3438 小M的作物

題目鏈結 先考慮沒有額外收益的時候怎麼做。從 s 向第 i 點連一條容量為 a i 邊,表示種在 a 中的收益。從第 i 個點向 t 連一條容量為 b i 的邊,表示種在 b 中的收益。然後求出來最小割,用總收益減去即可。完成之後如下圖 然後考慮如何處理額外收益 對於每乙個額外的收益,我們先新建乙個...

bzoj3438 小M的作物

這題是一道最大權閉合圖的經典難題 by rose max upd 不誤人子弟了,這就是乙個裸的最小割啊。然後構圖的方式就是把作物值分成ab集合,乙個在st一邊,乙個在ed一邊,st連作物流量為a i 作物流ed流量為b i 對於每乙個組合,新建兩個點,乙個被st流流量為c1,乙個流ed流量為c2,然...

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