ABC326G 题解

blog。简单最小割。


发现 \(L_{i,j}\le5\),所以对 Level 拆点。初始源点 \(S\xrightarrow{0} \text{Lvl}1_i, S\xrightarrow{c_i} \text{Lvl}2_i,\text{Lvl}3_i,\text{Lvl}4_i,\text{Lvl}5_i\),表示当前是 \(\text{level }1\),每升一级就要多买个 \(c_i\)

对于成就,建边 \(\text{Achieve}_i\xrightarrow{a_i} T\)。割掉这条边,表示你可以不满足这个成就,但是你会少获得 \(a_i\) 元。

对于 \(L_{i,j}\),建边 \(\text{Lvl} k_j\xrightarrow{+\infty}\text{Achieve}_i(1\le k\le L_{i,j})\),表示你获得这个成就就得保证 \(1\sim L_{i,j}\) 均买到了。

跑最小割。最小割就是奖励与所用的成本之和,用成本总和减去最小割即为答案。

code,时间复杂度 \(O(\text{能过})\)

posted @ 2023-11-05 11:39  liangbowen  阅读(22)  评论(0编辑  收藏  举报