ARC 107 F Sum of Abs 题解

89 篇文章 1 订阅

ARC 107 F Sum of Abs 题解

先来一波提示:


  1. 若联通块内 b i b_i bi的和为正数,最终的得分直接就是 ∑ b i \sum b_i bi,若和为负数,则最终分数为 ∑ ( b i × − 1 ) \sum (b_i\times -1) (bi×1),也就是说每一个点要么直接将 b i b_i bi算入答案,要么将 b i × − 1 b_i\times -1 bi×1算入答案,要么直接删去,且一个联通块内算入答案的方式相同(要么都不 × − 1 \times -1 ×1,要么都 × − 1 \times -1 ×1)。

  1. 考虑每一个点算入答案的方式与 ∣ b i ∣ |b_i| bi之间的差。也就是这种方式的代价。

  1. 每一个点要么删掉,要么乘上-1,要么直接算入答案。匹配!

  1. 网络流!尝试构图。

  1. 最小割!

请读者先思考以上5个问题在看下面的题解。

题解:

首先我们将每一个点的 b i b_i bi的绝对值算入答案。

  • b i < 0 b_i<0 bi<0则乘上-1,删除,乘1的代价分别为,0, a i + ∣ b i ∣ a_i+|b_i| ai+bi, 2 × ∣ b i ∣ 2\times |b_i| 2×bi
  • b i ≥ 0 b_i\geq0 bi0则乘上-1,删除,乘1的代价分别为, 2 × ∣ b i ∣ 2\times |b_i| 2×bi a i + ∣ b i ∣ a_i+|b_i| ai+bi , 0 0 0

构建一张图:

  • 首先是原点和汇点, S S S T T T
  • 然后将每一个点拆成“入”和“出”,(网络流经典套路)
  • 然后将原图中的边在这张图上连起来
  • S → i S\rightarrow i Si,代表i号点以 b i × − 1 b_i\times -1 bi×1算入答案, i → T i\rightarrow T iT表示i以 b i × 1 b_i\times 1 bi×1算入答案。
  • 可以发现要使最终的每一个联通快算入答案的方式都一样,最终的 S S S T T T不连通。
  • 也就是需要割一些边,使得最终的图不连通。
  • 若割 S → i S\rightarrow i Si表示 i i i b i × 1 b_i\times 1 bi×1算入答案。否则 i → T i\rightarrow T iT, i i i b i × − 1 b_i\times -1 bi×1算入答案。

最终答案为 ∑ ∣ b i ∣ − m i n c u t \sum |b_i|-\mathbf{min cut} bimincut

代码非常简单,只要理解上述题解就可以在5min打出来,所以这里就不展示了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值