OI
给定数列 ,求解满足如下形式的数列 :,对 取模。
这道题可以通过多项式求逆解决。我们在此不作讨论。
考虑其转移形式,全部都是依赖于前序已求出项的、固定系数的线性转移。则可以考虑CDQ分治。如果你愿意,也可以叫作“分治FFT”。
假设正处理区间 ;令 ,我们已经计算好 。现统一处理左半区间对右半的贡献。
则令考虑的乘积项为 ,要向 作贡献。有 。故而对于 ,其将分别与 作卷积。其二者下标的和即为贡献对象。故而我们构造两个多项式 ,有 ,将其二者作卷积,他们对 的贡献即为 。
SOS Dynamic Programming [Tutorial] – usaxena95 on CodeForces
通过优化,将子集求和类相关问题的时间复杂度由朴素的 优化到 。
一场相当有收获的比赛。比赛链接
A – 石老板举世无双
解法一
尝试观察规律。我们发现,在完成次操作以后,左端点的可能取值为,右端点的可能取值为。假如现在我们达到最终状态,其。那么,在的二进制表示中,如果从高到底第位为,则在第轮中,有check (mid) == 0
,向右区间递归;否则向左区间递归。这是很容易解释的:若向右递归,则右端点不变。而在下一层,右端点表示中的所有系数乘,所以体现为二进制位末尾添一个。反之,就变成,在下一层中体现为。如果其有位为,则到达该状态的概率为。
以时的状态为例。的三位二进制表示为,则推断出在前三轮分别向右、左、右区间递归,到达其的概率为。 (更多…)
Algorithm 457: Finding All Cliques of an Undirected Graph [H] – Coen Bron* and Joep Kerboscht – Archives of Communication of ACM
原Essay详细而准确地描述了该算法的过程,不需要额外的注解也能轻松理解。若英语阅读吃力,也有一份不错的中文详述:
极大团(maximal clique)算法:Bron-Kerbosch算法 – Bowiee – 简书
下面给出一份参考实现,能够找出所有极大团。使用unsigned long long
存储各状态点的集合,二进制表示下从低到高第位为表示点存在于集合中。 (更多…)