Gravatar
yrtiop
积分:2101
提交:309 / 808

Pro2919  [HEOI 2017] 寿司餐厅

Link. 有附加内容。懒得搬了。

最喜欢的一集。

题目的要求十分简洁,但是贡献的计算非常繁琐诡异,而 $n$ 非常小。基本上可以直接放弃别的想法直奔网络流了。

观察一下贡献的形式,发现 $d_{i, j}$ 的贡献方式是我们熟悉的,可以用最大权闭合子图的模型来描述。所以考虑一下最小割。

除了 $d_{i, j}$ 我们还有一个 $mx^2 + cx$ 的贡献。这两个贡献仍然可以看作最大权闭合子图。具体地,选上 $d_{i, i}$ 后会产生 $ma_i^2$  的代价,如果之前已经产生过了则无所谓。给每种类型建一个点即可。

类似地,$cx$ 可以平摊到每次选 $x$ 的位置上,对 $d_{i, i}$ 对应的 $a_i$ 建立点 $A_i$ 并连边,表示选上 $d_{i, i}$ 则必须选上 $-a_i$。

然后就没了。讲一下最大权闭合子图,考虑这样一个模型:给定一张 $n$ 个点 $m$ 条边的有向图。每个点有代价 $a_i$,可正可负。你可以选上一些点,你的分数是你选的点的 $a$ 之和。但是选点有限制,选上一个点 $x$ 则必须选上 $x$ 能到达的所有点。求最大分数。

这个过程可以看作,选一些正权点,为了得到它们的权值不得不割舍一些负权点的代价。

于是考虑转化一下限制,改写成:选一些正权点,选上一个点后必须选上其所能到达的负权点。

这样做的好处在于,即简化了问题,又保证答案不会改变。感觉非常妙。

然后就是最小割建模。建立源汇点 $S, T$,对于每个正权点 $i$,连 $S\to i$,流量为 $a_i$。对于每个负权点 $i$,连 $i\to T$,流量 $-a_i$。对于正权点 $i$ 和其所能到达的负权点 $j$,连边 $i\to j$,流量 $+\infty$。答案即为正权点权值和减去最小割。



2024-03-20 22:42:25    
我有话要说
暂无人分享评论!