CF1981B 题解

思路

容易发现每一秒每个格子的或区间会左右各延伸一格(最多到 00),例如 33 号点在 55 秒后变成了 0123456780|1|2|3|4|5|6|7|8nn 号节点在 mm 秒后会变成 max(nm,0)n+m\max(n-m,0)\sim n+m 的按位或和。

至于 lrl\sim r 的按位或和怎么求,那我们不放先假设 l=1011001,r=1011100l=1011001,r=1011100(此处均表示二进制,下同),则 lrl\sim r 一定包含 10110111011011,此时只要拿这个数和 rr 做一次或就可得到 10111111011111。同理,只要知道 l=x0a,r=x1bl=x0a,r=x1baabb 位数相同),则得数就是 x0111rx0111\dots|r

代码奉上

posted @ 2024-06-02 13:57  Vitamin_B  阅读(12)  评论(0)    收藏  举报  来源