黄焖鸡

uoj #838. 龙门对决 给定一棵 nn 个点的无根树,询问有多少连通子图满足其大小大于等于其最大点独立集的两倍。

要求树的最大独立集,考虑到树是二分图,则最大独立集等于点数 - 最大匹配,即该图存在完美匹配。

考虑叶子,它只能与父亲一组,且不能有兄弟节点,这样每次删叶子及其父亲,可以得到合法的树的唯一一种完美匹配。

考虑 dp,设 fi,0/1f_{i,0/1} 表示点 ii 为根的联通块,ii 是否已分组的方案数。

时间复杂度 O(n)\mathcal O(n)

InfOJ #289 黄焖鸡 每个位置取值范围给定的序列,满足任一区间最大权独立集都不等于和的一半,求方案数。

考虑用上面的判定方式,看作位置 iiaia_i 个点,与前面和后面的所有点两两连边。

则一个位置选了一个点,其前面和后面的位置不能选点,故贪心的取这个位置上的所有点,满足序列最大权独立集的计算方式。

可以发现,这是个二分图,则序列最大权独立集都等于和的一半的充要条件是该图存在完美匹配。

这个图有特殊的性质,考虑位置 11 上的点,只能和位置 22 的点匹配,要求 a2a1a_2\ge a_1,则位置 22 剩下 a2a1a_2-a_1 个点,且只能和位置 33 的点匹配。

故该图存在完美匹配等价于:

si=aisi1s_i=a_i-s_{i-1},则 sn=0s_n=01i<n,si0\forall 1\le i<n,s_i\ge 0

题目要求所有区间满足条件,故考虑从前往后 dp,维护当前所有后缀的 sis_i 的集合,共 2m2^m 种情况,因为 si[1,m]s_i\in [1,m]si=0s_i=0 的情况不合法,si<0s_i<0 的情况一定合法,可以舍去)。

根据上述可得,只有 si1<ais_{i-1} < a_i 的情况有用,故对 aia_i 从大到小转移,对于 si1ais_{i-1}\ge a_i 的状态去做超集和,这样状态数只有 2ai2^{a_i},时间复杂度 O(nxm2x)=O(n2m)\mathcal O(n\sum_{x\le m}2^x)=\mathcal O(n2^m)

posted @ 2024-02-10 20:43  蒟蒻orz  阅读(11)  评论(0编辑  收藏  举报  来源