Grakn Forces 2020 H[匹配][优先队列][Hall定理]

博客介绍了如何使用优先队列和Hall定理解决特定问题,强调在限制条件下找到最大匹配数的方法。通过分析问题转化为寻找左半部分的最优选择,并利用优先队列进行维护。此外,还提到了Hall定理的做法,可能突破原问题的限制条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

怎么做呢?博主没推出任何一步,只能做个没脑子的搬运工了。。。同时搬运下caoyue大佬和myh大佬的理解。
设有m个0
先考虑答案为len是否可行,可行的话一定 l e n < = m / 2 len<=m/2 len<=m/2,且选前len个和后len个0充当i和k一定存在方案。挺显然的。。。
把上面那句话转化一下,存在方案当且仅当存在i都在前半部分,j都在后半部分
考虑每种颜色
有了一半这个限制,如果一个颜色的某个位置在左半部分,那么只要保证了选的个数不超过m的一半,那么就不用担心右半部分的选择问题,所以考虑左边即可。
换句话说,没种颜色可以表示成一个二元组(l,r),表示可以选择前l个0中的一个或后r个0中的一个,且l<=m/2,r<=m/2,问最大匹配数
Ans=min(最大匹配数,m/2)

优先队列做法

如果左半部分还能选点,那就继续选,一定不劣
所以得出左半部分能选的最多点数L,把1~L的点都选了
我们要使得剩下的r尽量优秀
那么做法很明显了,无论从感性上还是理性上,x从L扫描到1,把未选的l>=x中最小的r给剔除了
记得最后加上l=0的r
整个过程可以用优先队列维护

Hall定理做法

目测这个做法可以使得l,r不满足<=m/2的限制
观察扩展Hall定理求最大匹配数:
A n s = ∣ S ∣ − m a x S ′ ⊆ S ( ∣ S ′ ∣ − ∣ t r ( S ′ ) ∣ Ans=|S|-max_{S' \subseteq S}{(|S'|-|tr(S')|} Ans=SmaxSS(Str

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值