P1361 小M的作物

2022-05-03 13:33:15 字數 2494 閱讀 3335

小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個整數,表示該組合中的作物編號。

輸出格式:

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

輸入樣例#1: 複製

3

4 2 1

2 3 2

12 3 2 1 2

輸出樣例#1: 複製

11

樣例解釋

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

資料範圍與約定

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

//

我還真以為這是個最大流板子。。。

//畫圖的時候發現,如果直接s向作物連inf的邊,作物向a、b連各自收益的邊,然後a、b向t連邊的話,

//。。。那肯定不對啊,因為乙個作物可以有兩種互不干擾的選擇了。。

//那我們就讓他們互相干擾,只能往一塊地上種,怎麼辦呢?

//s向農作物連種在a的收益,農作物向t連重在b的收益,這樣就每種作物只能選乙個了

//...但是這樣出來是選的最小的。。。 話說網路流就是跑最小的。。。

//那我們一減就是最大的了。。

//。那這不是最小割嗎。

//組合的情況怎麼辦呢?

//新設兩個點x和y

//讓s向x連在a種的邊,邊權為這個組合在a種獲得的收益,x向組合內的作物連inf的邊,

//組合內作物向y連inf的邊,y向t連在b種的邊,邊權為在b種獲得的收益

//這樣跑出來的最大流就是能獲得的最小收益

//總收益減一下就是最大收益了

//好吧我無言以對,上午一直wa第二個點,氣得我差點就特判a那個點了

//但是我沒猜出那個點是啥來。。。

//好吧也不知道錯誤在哪

//下午來了,被班主任踢了兩腳,敲另乙個題的時候突然想起:

//我要初始化num_edge=1 !!!!!!

//不初始化的話,i^1就不是反向邊了 剛學網路流發現要寫num_edge=1的時候就預料到了肯定會翻車的 果不其然

//上午把這個題改成最大流板子跑樣例,發現打錯了

//改過來,過樣例了,但是我沒寫num_edge=1,他仍然是錯的。。。

//樣例都是騙小孩的,我應該提交一次的

//所以,不要把時間卡在一道題上,上午的sb錯誤,放過它去,下午以來說不定就知道了

//(當然可能需要班主任觸發)

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int n=1e4+5

;const

int m=4e6+5

;const

int inf=0x7fffffff

;int

n,m,s,t,v;

inthead[n],front[n],num_edge;

struct

edge

edge[m];

inline

intread()

inline

void add_edge(int u,int v,int

flow)

intdep[n];

inline

bool

bfs()}}

return0;

}int dfs(int now,int

flow)

}dep[now]=0

;

return

outflow;

}int

a;int

main()

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

m=read();

for(int i=1,k,c1,c2,id,p,q,flow;i<=m;++i)

}while

(bfs())

v-=dfs(s,inf);

printf("%d

",v);

return0;

}

P1361 小M的作物

p1361 小m的作物 二者取其一型別的網路流題 不同的集合,向對應元素連去不同 收益 容量的邊 對於那些神奇的組合,我們只需要按照以下方式建立兩個點 x 向 s 連一條在a時的額外收益 2.x x 注意順序,x 是其有向邊的起點,x 是其有向邊的終點 向其後繼節點連 inf 容量的邊,保證不會出現...

洛谷 P1361 小M的作物

有 nn n 種作物,兩塊耕地 a aa 和 bbb 第 i ii 種作物種植在 a aa 中收益為 a ia i ai 種植在 b bb 中收益為 b ib i bi 另有 m mm 種組合,每種組合有 k kk 種作物,如果這 k kk 種作物共同種在 a aa 中收益為 c1i c1 i c1...

P1361 小M的作物 最小割

小m在mc裡開闢了兩塊巨大的耕地a和b 你可以認為容量是無窮 現在,小p有n中作物的種子,每種作物的種子有1個 就是可以種一棵作物 用1.n編號 現在,第i種作物種植在a中種植可以獲得ai的收益,在b中種植可以獲得bi的收益,而且,現在還有這麼一種神奇的現象,就是某些作物共同種在一塊耕地中可以獲得額...