I want to explain the brute force for F.
In the tutorial of F,it said "however, deriving them manually is quite complicated, as there are many situations."
But I consider this problem as a perfect chance to practice case work:
Do the first three letters by case work.
First, whether $$$s_1$$$ is 'a' or 'b' doesn't matter.
We can just record the longest 'ababab' prefix and the value of $$$s_{mid}$$$ ,and do case work. Do two letters $$$x,y$$$ once.
- p=1; p is odd number ;p is even number
- $$$s_1=s_{mid}$$$,$$$s_1\neq s_{mid}$$$
- $$$p=mid-1$$$,$$$p\neq mid-1$$$
- $$$x=a$$$,$$$x=b$$$
- $$$y=a$$$,$$$y=b$$$
In the $$$p=1$$$,we don't care $$$p=mid-1$$$.
As in the code,there is $$$2\times 2 \times 2+2\times 2\times 2\times 2\times 2=40$$$ cases,handle them one by one and get c++ code in 15kb.
I highly recommend you to read code, and I'm glad you to find my mistakes.



