[NOI2019]序列

在这里插入图片描述
首先,因为要求最大的和,可以将费用设为负数,这样跑最小费用最大流是可以求出答案的。
传递方式有两种:
1. a i 到 b i ai到bi aibi,这种可以压缩2的空间。
2. a i 到 b j ai到bj aibj,这表示选不同序号的a,b。因为要至少有l个是1,所以这种边的流量为k-l。
但是这样直接跑费用流是过不了的。
所以考虑是否能用一些东西替代费用流的过程。
想到贪心。
显然, A . 走 c d 的 边 得 到 的 利 益 肯 定 是 大 于 等 于 走 1 的 边 的 ( 因 为 c d 也 可 以 走 相 同 的 边 , 但 是 我 们 不 这 样 做 , 因 为 相 同 的 边 走 1 可 以 给 2 更 多 的 流 量 ) 。 A.走cd的边得到的利益肯定是大于等于走1的边的(因为cd也可以走相同的边,但是我们不这样做,因为相同的边走1可以给2更多的流量)。 A.cd1cd12

接下来,使用优先队列用以匹配1的走法以及A操作所空出来的2边即可(多开一个数组记录他的取得情况)。
在A之后具体有两种方式:
a i 和 b i 以 及 撤 回 c d 流 量 。 ai和bi以及撤回cd流量。 aibicd
具体怎么撤回:
例如, B . a i 已 经 配 对 b j , 而 b i 没 有 配 对 , 说 明 a i 肯 定 走 的 是 c d , 找 到 最 大 的 符 合 这 种 要 求 的 b i , 再 找 一 个 a k , 让 a i 配 对 b i , a k 配 对 b j , 这 样 c d 流 量 还 是 不 变 化 。 B.ai已经配对bj,而bi没有配对,说明ai肯定走的是cd,找到最大的符合这种要求的bi,再找一个ak,让ai配对bi,ak配对bj,这样cd流量还是不变化。 B.aibjbiaicdbi

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值