前言:
对于这场,我只能讲讲C,D来对自己复习,因为一个月没有训练导致vp了2把都是灰名表现分,所以写点题解来给自己记录一点好思路?
显而易见的,这题一开始就能看出来是一道博弈题,然后能之间发现K其实不属于他们的博弈点,只需要知道k是奇数还是偶数就行
如果是偶数的话,直接求原数组的最大连续子串,如果是奇数,就对每个点进行一次加点,然后找出能形成的最大连续子串
这题有2种思路(目前)
一种是主流的写法,也是大部分std给大家的标答:
把字符串s、t都变成只有0的字符串,然后记录一下过程就行,可以证明的是每四个子串一共 16种可能都能在几步以内变成0000然后重复操作就行
第二种是我想出来的
用4子串的特性使s[i]==t[i]然后直接推到最后四个,再按照变换变过去