Gym 101981-I Magic Potion 题解

传送门

题意:有 n 个勇者和 m 个怪物,第 i 个勇者有一个可杀怪物集合 Mi,每个勇者只能杀各自 Mi 中的一个怪物。
但是你有 k 瓶魔药,每一瓶都可以让一个勇者多杀一个 Mi 中的怪物。但是每个勇者只能吃一瓶药。问最多能杀多少个。

考虑让勇者和怪物匹配,匹配上了就表示勇者杀这个怪物。

因为吃药后的勇者可以看作一个新的勇者,所以给每个勇者抽象出一个新的点 "嗑药勇者",每个嗑药勇者都和原来勇者能击杀的怪物一样连边。

但是这样求最大匹配,无法限制 k 瓶魔药!所以给怪物也抽象出 nk 个虚拟怪物,每个虚拟怪物向每个嗑药勇者连边。

在这个图上求最大匹配为 aa(nk) 就是原来的答案。

当然这题网络流的建模非常简单:新建一个点 MSM 连容量 k 的,M 向每个勇者连容量 1 的。

posted @   FLY_lai  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示