雅禮集訓 2017 價

2022-05-02 01:51:13 字數 992 閱讀 4625

傳送門

乙個不太顯然的最小割做法。。。

我們這麼連邊:源點向藥物連 \(+ \infty - p_i\) 容量的邊,藥物向它對應的藥材連 \(+ \infty\) 容量的邊,藥材向匯點連 \(+ \infty\) 容量的邊。

用源點的流量減去最小割,再負回來就可以求出答案了。

怎麼理解呢?割掉一條邊表示不選其對應的藥物或藥材,我們發現最後的方案一定是完美匹配,也就是說我們肯定會讓藥物對應的藥材出現重複,然後我們肯定不想割掉更多的邊,也就是說只需求出最小割就好了。

#include #include int min(int a, int b) 

template < class t > void read(t& s)

const int _ = 1e5 + 5, __ = 2e6 + 5, inf = 2147483547, top = 1e7;

int tot = 1, head[_]; struct edge edge[__ << 1];

void add_edge(int u, int v, int w) , head[u] = tot; }

void link(int u, int v, int w)

int n, ans, s, t, dep[_], cur[_];

int bfs()

}return dep[t] != 0;

}int dfs(int u, int flow) }}

return 0;

}int dinic()

return res;

}int main()

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

read(x), ans += top - x, link(s, i, top - x), link(i + n, t, top);

printf("%d\n", dinic() - ans);

return 0;

}

LOJ6045 雅禮集訓 2017 Day8 價

標籤 最小割,網路流 題目傳送門 30分 爆搜 40分 加乙個特判 全部取 因為pi小於0 正解 最小割建圖 源點s向每個 藥連一條流量為pi inf的邊 藥向其對應的藥材連一條流量為inf的邊 每個藥材向匯點t連一條流量為inf的邊 然後跑dinic 因為存在負邊權,那麼要加入sum計算進入 藥的...

loj6045 雅禮集訓 2017 Day8 價

我們考慮最小割。我一開始覺得是裸的最小割,就直接s到每個 藥連up p i 的邊,藥到藥材連inf邊,藥材到t連up,然後得到了40分的好成績。之後我發現這是乙個假的最小割,最小割割的是代價或者得不到的收益,上面說的這種建圖左邊割掉的是收益,右邊割掉的是代價,然後當然就gg了。所以我們把p取相反數,...

2017國慶雅禮集訓 長沙雅禮划水記

一題給出數軸上 n 個座標xi 有權值w i 求由 x i xj wi wj 連邊構成的最大團。這個式子長得太像兩圓相離或外切的表示了 連數軸都告訴你了呀 於是瞬間變成取最多不重區間的水題。然而我居然忘了還有右端點排序後o n 的簡單貪心,寫了個o n2 的dp加二分優化 我太鹹啦 好在總複雜度還是...