【仙人掌?】【并查集】HDU6350 Always Online

本文详细介绍了如何利用仙人掌图的性质和并查集解决HDU6350题目的过程。首先分析了树形结构下的解决方案,通过从大到小加入边,根据边权更新联通块中的信息来计算最大流。接着,讨论了仙人掌图的解题策略,利用最小割最大流定理,将问题转化为树形结构,最后按照树的解决方案求解。数据范围的特殊性使得正确处理整数类型成为关键。
摘要由CSDN通过智能技术生成

分析:

考场上看都没看的题。。。但实现起来居然异常简单(相对于隔壁D题动态点分治而言)。。。。

这题除了利用了仙人掌图的定义。。其它都和仙人掌没关系。。。

先考虑一个相对简单的问题:

如果给的是棵树,怎么求答案?

树的性质无非就是两点间路径唯一,也就是说,这里的“最大流”可以看作两点间路径上的边权最小值。

从大到小加入边。每次加入时,因为两端点所在的联通块中,这条边边权一定是最小的(比它边权小的边都还没加入)。那么这两个联通块之间的路径最小值一定可以在当前这条边上取到。所以就可以算出这条边对最终答案的贡献。

由于题目非常鬼畜地要异或点的编号,所以这里求贡献还是需要一点技巧:

用并查集维护每个点所在的联通块中,编号在二进制下第 k k 位为0、为1的点的数量,设为 s u m k 0 sumk1 s u m k 1

我们可以按边权在二进制下的每一位,分别求贡献。

若边权二进制下第 i i 位为1,那么就要求两个点的编号在第

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值