【COCI 2012】Toy

题目大意

有种物品都被选出的方案数。

70分算法

正难则反。 考虑用所有方案数减去不合法的方案数。所有方案数显然是。 接下来我们枚举少了哪些元素作为不合法的方案,然后利用容斥原理,,枚举它的子集得到至少少了这些元素的箱子个数,否则加上。

时间复杂度

100分算法

我觉得满分算法比较神。它是利用分治把所有的一齐算出来。 考虑我们现在要算出区间的答案。 区间二进制首位都为。 而对应位置上右区间只是比左区间多了开头的一个,故左区间的每个位置必定是右区间的对应位置上的子集。那么我们只需要递归计算左右的答案,然后把左边的加到右边去就可以了。

后记

这种分治策略有印象不是第一次见了,和也有点异曲同工之妙,记住它吧。

生命不在长而在于好,只要每一次尽力的演示,都值得鼓励与喝采。

【COCI 2012】Toy

相关文章:

你感兴趣的文章:

标签云: