1 条题解
-
0
自动搬运
来自洛谷,原作者为

revenger
**搬运于
2025-08-24 21:55:06,当前版本为作者最后更新于2018-04-26 18:34:31,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
看到这道题,我们先来画一下柿子。
$D=\sum_{i=1}^n\sum_{j=1}^na_i*a_j*b_{i,j}-\sum_{i=1}^na_i*c_i$
柿子画到这里,我们可以看出,对于每个,选0的时候没有贡献,选1的时候会带来的损失,但是对于每一个同样选1的,会带来的贡献。
结合数据范围,可以联想到最小割。

这里我们假设S集是选0,T集是选1。一开始我们获得了所有的收益,我们要让损失最小化。
列式子
(都选1的时候只有的损失)
(都选0的时候损失为数组)
(一个选1一个选0时损失为数组两数之间的收益和对应数组收益)
可以解出对于每一组
对于每一组,我们需要把割和的损失累加起来。
$ax=b_{x,x}+\frac{\sum_{i=1}^n(i!=x)b_{x,i}+b_{i,x}}{2}=\frac{\sum_{i=1}^nb_{x,i}+b_{i,x}}{2}$
这样建图就非常明显了,为了避免有小数的出现,我们将流量翻倍。
从源点往每个点连接流量为数组第行和第列的权值总和的边。
每个点往汇点连接流量为的边。
每一对点之间连流量为的双向边。
最后答案为$\sum_{i=1}^n\sum_{j=1}^nb_{i,j}-\frac{Maxflow(S,T)}{2}$
时间复杂度O()
- 1
信息
- ID
- 2922
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者