专栏文章
CF2046D 题解
CF2046D题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mip8sojj
- 此快照首次捕获于
- 2025/12/03 08:02 3 个月前
- 此快照最后确认于
- 2025/12/03 08:02 3 个月前
有 个仓库,每个仓库中有 个机器人。你可以在最开始激活若干个仓库,这会使得其中的所有机器人被激活。被激活的机器人可以沿有向边移动,去激活沿途的仓库。问最初最少激活多少个仓库才能让所有仓库都被激活。
如果一个强连通分量内有一个仓库被激活了,则这等同于强连通分量的所有仓库都被激活了。于是可以缩点。强连通分量的点权为其中各个仓库的点权之和。
将题目转写为最大化每个点被其它仓库经过的获益和。记一个仓库 是被其它仓库激活的获益为 。具体地,如果 ,那么 就必须被经过,所以可以考虑令 。否则, 就可以不用被手动激活了,代价 ,所以令 。本贡献可以拆成当 第一次被经过时,收益为 ,否则收益为 。
于是就可以建图了:把每个点 拆成入点 以及出点 ,连接这几类边:
:只能有 个路径以 为端点。
:结束路径。
:经过有向边。
:首次有 的获益。
:其余情况经过 点没有获益。
求最大费用可行流即可。无解当且仅当存在一个 满足 ,有 无流量。拿 减去最大费用即可。
由于流量至多有 ,每次寻找的复杂度为 ,所以最坏时间复杂度为 。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...