我們考慮最小割。
我一開始覺得是裸的最小割,就直接s到每個**藥連up+p[i]的邊,**藥到藥材連inf邊,藥材到t連up,然後得到了40分的好成績。
之後我發現這是乙個假的最小割,最小割割的是代價或者得不到的收益,上面說的這種建圖左邊割掉的是收益,右邊割掉的是代價,然後當然就gg了。
所以我們把p取相反數,因為有負權,我們在給所有邊加上乙個up,之後就可以直接建圖最小割了。
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7view code#define up 2000000
8#define inf 0x7fffffff
9#define n 666
10using
namespace
std;
11int e=2
,head[n];
12struct
edgeed[n*n];
15void add(int u,int v,int
f)21
intn,ans,s,t,dep[n];
22bool
bfs()33}
34}35return0;
36}37int dfs(int x,int
f)46}47
if(!ans)dep[x]=-1;48
return
ans;49}
50int
dinic()
55int
main()65}
66for(int i=1,x;i<=n;i++)
72 ans+=dinic();
73 printf("
%d\n
",ans);
74 }
LOJ6045 雅禮集訓 2017 Day8 價
標籤 最小割,網路流 題目傳送門 30分 爆搜 40分 加乙個特判 全部取 因為pi小於0 正解 最小割建圖 源點s向每個 藥連一條流量為pi inf的邊 藥向其對應的藥材連一條流量為inf的邊 每個藥材向匯點t連一條流量為inf的邊 然後跑dinic 因為存在負邊權,那麼要加入sum計算進入 藥的...
雅禮集訓 2017 價
傳送門 乙個不太顯然的最小割做法。我們這麼連邊 源點向藥物連 infty p i 容量的邊,藥物向它對應的藥材連 infty 容量的邊,藥材向匯點連 infty 容量的邊。用源點的流量減去最小割,再負回來就可以求出答案了。怎麼理解呢?割掉一條邊表示不選其對應的藥物或藥材,我們發現最後的方案一定是完美...
2017國慶雅禮集訓 長沙雅禮划水記
一題給出數軸上 n 個座標xi 有權值w i 求由 x i xj wi wj 連邊構成的最大團。這個式子長得太像兩圓相離或外切的表示了 連數軸都告訴你了呀 於是瞬間變成取最多不重區間的水題。然而我居然忘了還有右端點排序後o n 的簡單貪心,寫了個o n2 的dp加二分優化 我太鹹啦 好在總複雜度還是...