Codeforces Round #631 (Div. 2) Dreamoon Likes Sequences

Posted alexpanda

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #631 (Div. 2) Dreamoon Likes Sequences相关的知识,希望对你有一定的参考价值。

题面很短,别的博客也讲了就不说题意了。

做法:

异或是没有进位的加法,所以ai + 1的二进制最高位要大于ai的二进制最高位,才能满足ai递增,bi也递增的条件。呐这样的话,选了4,(5,6,7)就都不能选了,只能选比7大的数。

这样分析下来a数组最长也只有30,(2^30>1e9)

直接按照数字大小dp会TLE

 

思路角度1:换一个角度,我们把二进制最高位相同的看作一组,因为这一组内只能选一个数。

有点像分组背包。但是我们现在只看分组背包的方案数,所以就不用枚举每一组内的物品了。

dpij表示考虑到前i组,选了其中j组的方案数。

cnt[i]表示第i组有多少个

dpij += dpi-1j-1*cnt[i] 考虑要第i组

dpij += dpi-1j 考虑不要第i组

然后就可以了

我写的时候顺便空间优化了下

https://paste.ubuntu.com/p/YjzM6RmPWC/

 

思路角度2:换一个角度,我们把二进制最高位相同的看作一组

dpi 表示以第i组为结尾的序列的方案数。

cnt[i]表示第i组有多少个

dpi  += dpk * cnt[i] (k 从0枚举到i - 1)

https://paste.ubuntu.com/p/vxPHns2YVJ/

以上是关于Codeforces Round #631 (Div. 2) Dreamoon Likes Sequences的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #344 (Div. 2) 631 C. Report (单调栈)

Codeforces Round #631 (Div. 2) B. Dreamoon Likes Permutations(排列组合)

Codeforces Round #631 (Div. 2) - Thanks, Denis aramis Shitov!

Codeforces Round #631 (Div. 2) - Thanks, Denis aramis Shitov!

Codeforces Round #631 (Div. 2) Dreamoon Likes Sequences

Codeforces Round #631 (Div. 2) C. Dreamoon Likes Coloring(贪心好题/意识流题解)