만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

SSHS 프로토콜

시간 제한2초메모리 제한1024 MB

요약
이진 문자열을 짝수 길이의 연속된 조각으로 나눌 때, 각 조각의 앞뒤 절반을 이진수로 읽은 값의 곱을 모두 더한 합의 최솟값을 구합니다.
난이도

보통10점 중 7점

유형
동적 계획법, 수학
정답자
아직 제출이 없습니다

문제

SSHS 프로토콜은 0과 1로만 이루어진 짝수 길이의 데이터를 전송할 수 있는 프로토콜이다. SSHS 프로토콜로 데이터를 전송하면 다음 방식으로 비용이 청구된다.

  • 전송할 데이터를 0과 1로 이루어진 길이 2k2k의 수열 TT라고 하자. (단, k≥1k \ge 1)
  • 청구 비용은 (∑i=1kTi2k−i)×(∑i=k+12kTi22k−i)\left( \sum_{i=1}^{k} T_i 2^{k-i} \right) \times \left( \sum_{i=k+1}^{2k} T_i 2^{2k-i} \right)이다.
  • 즉, TT를 절반으로 나눈 뒤 각 부분을 이진법 수로 보았을 때, 두 값의 곱만큼 비용이 청구된다.

데이터가 길수록 비용이 기하급수적으로 늘어난다. 그래서 데이터를 나눠서 보내는 경우가 많다. 데이터를 나눠 보내면 전체 비용은 나뉜 조각들의 비용의 합이다. 길이 NN의 데이터 SS가 주어졌을 때, 전체 비용의 최솟값을 구하여라.

정확한 정의는 다음과 같다.

  • 데이터 TT의 청구 비용을 f(T)f(T)라고 정의한다.
  • 0과 1로 이루어진 길이 NN의 데이터 SS가 주어진다. (단, NN은 짝수)
  • 1=i0<i1<i2<⋯<ip<ip+1=N+11 = i_0 < i_1 < i_2 < \cdots < i_p < i_{p+1} = N+1을 만족하고, 모든 정수 jj (0≤j≤p0 \le j \le p)에 대해 ij+1−iji_{j+1}-i_j가 짝수가 되도록 정수 i1,i2,⋯ ,ipi_1, i_2, \cdots, i_p를 고른다. (단, pp는 0 이상의 정수)
  • 이때 전체 비용은 g({i1,i2,⋯ ,ip})=∑j=0pf(Sij:(ij+1−1))g(\{ i_1, i_2, \cdots, i_p \}) = \sum_{j=0}^{p} f(S_{i_j : (i_{j+1}-1)})이다. (sl:rs_{l : r}은 ss의 부분수열 (sl,sl+1,⋯ ,sr)(s_l, s_{l+1}, \cdots, s_r)을 뜻한다.)
  • 전체 비용 gg의 최솟값을 구하여라.

데이터를 나누지 않고 그대로 보내는 것도 가능하다. 즉, g(∅)=f(S)g(\emptyset)=f(S)의 비용으로 SS를 전송할 수 있다.

입력

첫 번째 줄에 데이터의 길이 NN이 주어진다.

두 번째 줄에 0과 1로 이루어진 길이 NN의 데이터 SS가 공백 없이 주어진다.

출력

SS를 보낼 때 전체 비용의 최솟값을 출력한다.

제한

  • 2≤N≤2×1052 \le N \le 2 \times 10^5
  • NN은 짝수

예제3

  1. 예제 1

    입력
    8
    10110101
    
    예상 출력
    1
    
  2. 예제 2

    입력
    8
    11100110
    
    예상 출력
    1
    
  3. 예제 3

    입력
    8
    00001111
    
    예상 출력
    0