码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-04-04 14:21:22      阅读:59      评论:0      收藏:0      [点我收藏+]

标签:https   多少   没有   枚举   like   round   表示   递增   ORC   

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

做法:

异或是没有进位的加法,所以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

标签:https   多少   没有   枚举   like   round   表示   递增   ORC   

原文地址:https://www.cnblogs.com/AlexPanda/p/12631435.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!