这个题还是可以的。
但是卡常卡得我心力憔悴。还是太菜了
我们把一个区间当做一个26位二进制数,每一位代表一个英文,二进制数的每一个位0代表这一位对应的字母出现了偶数次,否则出现了奇数次。
那么一个区间可以升天,当且仅当这个区间对应的二进制数为0或
\(x^i\)。
我们用莫队。用
\(a[i]\)代表异或前缀和。考虑
\([l,r]->[l,r+1]\)贡献的变化,贡献会加上,
\(\sum{(a[r+1]==a[x])}+\sum{a[r+1]\oplus{(1<<i)}}(l-1\leq x\leq r,0\leq i\leq 25)\) 我们维护一个
\(a[i]\)在当前区间出现次数的桶
\(c[i]\)就成了
\(c[a[r+1]]+\sum{c[a[r+1]\oplus{(1<<i)}]}(0\leq i\leq 25)\)就可以做了。
卡常居然用到了 unsigned short。。。
#include #include #include #include #include #include