P3604 美好的每一天

原题

非常好的一道题

起初没看数据范围,以为是类似于区间的子区间性质的问题,口胡了一个扫描线+主席树的做法,然后发现要重排

首先读题,要重排后为回文串

然后发现数据范围很小,考虑根号算法。发现对于一个回文串,区间里的数要么都出现两次,要么有一个出现一次。这很类似于异或操作

于是我们考虑先对数状压一下,然后做一个前缀异或,则对于询问区间 \([x,y]\) 可以表示成找有多少个二元组 \((i,j)\) 满足 \(i,j \in [x-1,y],i < j,a_i \oplus a_j=2^k\ or\ a_i \oplus a_j=0\) ,这个就可以很方便的莫队啦

最终复杂度 \(O(Dn \sqrt n)\) ,其中 \(D = 26\)

posted @ 2023-10-13 11:23  FOX_konata  阅读(3)  评论(0编辑  收藏  举报