CF243A (拆位思想)

难度 1+

想了还是挺久的。首先对于这种区间的问题,比较常见的套路就是枚举右端点\(l_{i}\)通过数据结构算出贡献。em,因为是有关二进制的问题,考虑拆位,如果\(a_{i}\)或上前面的要变成新的数,那么必有一位0变成了1,所以想到开21颗平衡树找下前驱后继就可以了。

上面足以通过,但我们发现找前驱是可以通过记录一个b[100000][25],记录前驱,从前往后就可以了,从而优化到了\(n\log n\)

posted @ 2024-02-27 10:05  wuhupai  阅读(3)  评论(0编辑  收藏  举报