각 위치 i에 대해
Di=Xi−Yi
라고 하자. 여기서 문자를 정수로 보아 0은 0, 1은 1로 생각한다. 그러면 Di는 −1,0,1 중 하나이다.
먼저 목적식을 Di로 바꾸자. S의 앞 i글자에 포함된 1의 개수를 one라고 하면,
fS(i)=oneS
이다. 따라서
fX(i)−fY
이다. 그러므로 전체 목적식은
2i=1∑Nj=1
이다.
이제 연산이 D에 어떤 영향을 주는지 보자. 구간 [l,r]에서 X와 Y의 1 개수가 같다는 것은
i=l∑rDi=0
이라는 뜻이다. 이 구간을 서로 바꾸면, 해당 구간의 모든 Di는 부호가 바뀐다. 즉 Di가 1이면 이 되고, 이면 이 되며, 은 그대로 이다.
따라서 문제는 다음과 같이 바뀐다.
Di∈{−1,0,1}인 수열이 있다. 합이 0인 연속구간의 부호를 원하는 만큼 뒤집을 수 있다. 이때
Di=0인 위치는 어떤 연산을 해도 계속 0이다. 이제 Di인 위치들만 보자. 만약 어떤 두 비영 위치 사이에 이 먼저 나오고, 그 뒤에 이 나오며 그 사이가 모두 이라면, 그 전체 구간의 합은 이다. 이 구간을 뒤집으면