Q1:我为什么会发这个帖子
别问,问就是被卡了1h的阅读理解。
Q2:题目的S到底是怎么操作的
以COW为例
把W移到C的前面变成WCO,再把它一道原来的末尾,也就是COW+WCO=COWWCO,具体如下:
s+=s[s.size()-1]+s.substr(0,s.size()-1);
这样就好理解了。
Q3题解好难理解
可以理解成每一次变式都是:s+s[s.size()-1]+s.substr(0,s.size()-1)
由于 s 的长度和 s[s.size()-1]+s.substr(0,s.size()-1) 的长度是相等的,所以对于 s[s.size()-1]+s.substr(0,s.size()-1) 中的每一位都可以通过 s 中的一位推出来,即:如 s[s.size()-1]+s.substr(0,s.size()-1) 的第 1 位为 s 的最后1位,第 i(非1) 位为 s 的第 (i-1) 位。
Q4为什么会T
如果你像我一样,使用(1<<__lg(n/q))或其他的位运算(1<<)时,记得加上ll,如:(1ll<<__lg(n/q))