小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: 複製
34 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的收益,而且,現在還有這麼一種神奇的現象,就是某些作物共同種在一塊耕地中可以獲得額...