Tに?
が含まれない場合
Sのi文字までを取り出した物をSiとし、Siを2進数として解釈した値をkiとする。また、
- 先手必勝の場合、fi(ki)=1
- 後手必勝の場合、fi(ki)=0
とする。
iが奇数の場合
0
か1
のうちどちらかに先手必勝となる手があれば先手必勝であり、どちらでも後手必勝でれば後手必勝である。
よって、fi(ki)=fi+1(2ki) or fi+1(2ki+1)である。
iが偶数の場合
0
と1
のどちらも先手必勝となる場合のみ先手必勝であり、どちらかに後手必勝となる手があれば後手必勝である。
よって、fi(ki)=fi+1(2ki) and fi+1(2ki+1)である。
Tに?
が含まる場合
以下の表を用いてandやorの演算を行う。
and01?0000101??0??
or01?001?1111??1?
計算量について
kiの値は2i通りなので、fi(ki)の計算回数は21+22+⋯+2n−1=2n−2である。よって、計算量はO(2n)であり、この制約下では十分時間内に間に合う。
質問・誤りがある場合
Twitterに連絡ください。ID : @YS55749378