호반우가 학교에 지각한 이유 6

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

요약
수열의 양쪽 끝에서 두 개 또는 네 개를 XOR로 합쳐 길이를 정확히 M으로 줄일 때, 남은 수들의 합의 최댓값을 구한다.
난이도

어려움10점 중 8점

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

문제

마왕에게 거의 다다른 호반우지만 마왕의 옥좌로 들어가는 문이 잠겨 못 들어가고 있다.

문을 열기 위해서는 길이가 NN인 마법 열쇠를 길이가 정확히 MM인 마법 열쇠로 만들어야 하는데 마법 열쇠의 힘을 최대한 크게 만들어야 한다.

길이가 NN인 마법 열쇠는 NN개의 음이 아닌 정수로 이루어진 수열 a_1,,,a_2,,,a_3,,⋯ ,,a_Na\_{1},\\,\\,a\_{2},\\,\\,a\_{3}\\,,\cdots,\\,a\_{N}을 가지며 길이가 NN인 마법 열쇠의 힘은 수열을 구성하는 NN개의 수의 합으로 정의한다.

현재 마법 열쇠의 길이가 ℓℓ일 때 마법 열쇠에 다음 44가지 마법 중 하나를 적용하여 마법 열쇠의 길이를 줄일 수 있다.

  1. 마법 열쇠에서 a_1,,a_2a\_{1},\\,a\_{2}를 제거하고 앞에 a_1⊕a_2a\_{1}⊕a\_{2}를 추가하여 길이가 ℓ−1ℓ-1인 새로운 마법 열쇠를 만든다.
  2. 마법 열쇠에서 a_ℓ−1,,a_ℓa\_{ℓ-1},\\,a\_{ℓ}을 제거하고 뒤에 a_ℓ−1⊕a_ℓa\_{ℓ-1}⊕a\_{ℓ}을 추가하여 길이가 ℓ−1ℓ-1인 새로운 마법 열쇠를 만든다.
  3. 마법 열쇠에서 a_1,,a_2,,a_3,,a_4a\_{1},\\,a\_{2},\\,a\_{3},\\,a\_{4}를 제거하고 앞에 a_2⊕a_3,,a_1⊕a_4a\_{2}⊕a\_{3},\\,a\_{1}⊕a\_{4}를 추가하여 길이가 ℓ−2ℓ-2인 새로운 마법 열쇠를 만든다.
  4. 마법 열쇠에서 a_ℓ−3,,a_ℓ−2,,a_ℓ−1,,a_ℓa\_{ℓ-3},\\,a\_{ℓ-2},\\,a\_{ℓ-1},\\,a\_{ℓ}을 제거하고 뒤에 a_ℓ−3⊕a_ℓ,,a_ℓ−2⊕a_ℓ−1a\_{ℓ-3}⊕a\_{ℓ},\\,a\_{ℓ-2}⊕a\_{ℓ-1}을 추가하여 길이가 ℓ−2ℓ-2인 새로운 마법 열쇠를 만든다.

각 연산마다 변화를 수열로 나타내면 다음과 같다.

  1. (a_1,,,a_2,,,a_3,,,a_4,,⋯ ,,a_ℓ)⇒(a_1⊕a_2,,,a_3,,,a_4,,⋯ ,,a_ℓ)({\color{Red}a\_{{\color{Red}1}}},\\,\\,{\color{Red}a\_{{\color{Red}2}}},\\,\\,a\_{3},\\,\\,a\_{4}\\,,\cdots,\\,a\_{ℓ}) \Rightarrow ({\color{Red}a\_{{\color{Red}1}}}{\color{Red}⊕}{\color{Red}a\_{{\color{Red}2}}},\\,\\,a\_{3},\\,\\,a\_{4}\\,,\cdots,\\,a\_{ℓ})
  2. (a_1,,⋯ ,,a_ℓ−3,,,a_ℓ−2,,,a_ℓ−1,,,a_ℓ)⇒(a_1,,⋯ ,,a_ℓ−3,,,a_ℓ−2,,,a_ℓ−1⊕a_ℓ)(a\_{1}\\,,\cdots,\\,a\_{ℓ-3},\\,\\,a\_{ℓ-2},\\,\\,{\color{Red}a\_{{\color{Red}ℓ{\color{Red}-}{\color{Red}1}}}},\\,\\,{\color{Red}a\_{{\color{Red}ℓ}}}) \Rightarrow (a\_{1}\\,,\cdots,\\,a\_{ℓ-3},\\,\\,a\_{ℓ-2},\\,\\,{\color{Red}a\_{{\color{Red}ℓ}{\color{Red}-}{\color{Red}1}}}{\color{Red}⊕}{\color{Red}a\_{{\color{Red}ℓ}}})
  3. (a_1,,,a_2,,,a_3,,,a_4,,,a_5,,,a_6,,⋯ ,,a_ℓ)⇒(a_2⊕a_3,,,a_1⊕a_4,,,a_5,,,a_6,,⋯ ,,a_ℓ)({\color{Red}a\_{{\color{Red}1}}},\\,\\,{\color{Blue}a\_{{\color{Blue}2}}},\\,\\,{\color{Blue}a\_{{\color{Blue}3}}},\\,\\,{\color{Red}a\_{{\color{Red}4}}},\\,\\,a\_{5},\\,\\,a\_{6}\\,,\cdots,\\,a\_{ℓ}) \Rightarrow ({\color{Blue}a\_{{\color{Blue}2}}}{\color{Blue}⊕}{\color{Blue}a\_{{\color{Blue}3}}},\\,\\,{\color{Red}a\_{{\color{Red}1}}}{\color{Red}⊕}{\color{Red}a\_{{\color{Red}4}}},\\,\\,a\_{5},\\,\\,a\_{6}\\,,\cdots,\\,a\_{ℓ})
  4. (a_1,,⋯ ,,a_ℓ−5,,,a_ℓ−4,,,a_ℓ−3,,,a_ℓ−2,,,a_ℓ−1,,,a_ℓ)⇒(a_1,,⋯ ,,a_ℓ−5,,,a_ℓ−4,,,a_ℓ−3⊕a_ℓ,,,a_ℓ−2⊕a_ℓ−1)(a\_{1}\\,,\cdots,\\,a\_{ℓ-5},\\,\\,a\_{ℓ-4},\\,\\,{\color{Red}a\_{{\color{Red}ℓ}{\color{Red}-}{\color{Red}3}}},\\,\\,{\color{Blue}a\_{{\color{Blue}ℓ}{\color{Blue}-}{\color{Blue}2}}},\\,\\,{\color{Blue}a\_{{\color{Blue}ℓ}{\color{Blue}-}{\color{Blue}1}}},\\,\\,{\color{Red}a\_{{\color{Red}ℓ}}}) \Rightarrow (a\_{1}\\,,\cdots,\\,a\_{ℓ-5},\\,\\,a\_{ℓ-4},\\,\\,{\color{Red}a\_{{\color{Red}ℓ}{\color{Red}-}{\color{Red}3}}}{\color{Red}⊕}{\color{Red}a\_{{\color{Red}ℓ}}},\\,\\,{\color{Blue}a\_{{\color{Blue}ℓ}{\color{Blue}-}{\color{Blue}2}}}{\color{Blue}⊕}{\color{Blue}a\_{{\color{Blue}ℓ}{\color{Blue}-}{\color{Blue}1}}})

호반우가 문을 열어 마왕에게 갈 수 있도록 도와주자!

입력

첫 번째 줄에 마법 열쇠의 길이 NN과 목표 길이 MM이 공백을 두고 주어진다. (4≤M≤N≤3,000)(4 \le M \le N \le 3\\,000)

두 번째 줄에 NN개의 수 a_1,,,a_2,,,a_3,,⋯ ,,a_Na\_{1},\\,\\,a\_{2},\\,\\,a\_{3}\\,,\cdots,\\,a\_{N}이 공백을 두고 주어진다. (0≤a_i≤109)(0 \le a\_{i} \le 10^{9})

출력

길이가 MM인 마법 열쇠를 만들었을 때 가능한 마법 열쇠의 힘 중 최댓값을 출력한다.

힌트

⊕는 Bitwise XOR 연산이며 비트 단위로 연산을 시행한다.

  • Bitwise XOR

    • 두 수의 비트마다 아래와 같은 연산을 진행한다.
      • 두 비트가 서로 다르면 결과가 11이고, 그렇지 않으면 00이다.
    • 예시
      • 0110_2=6 ⊕  1100_2=12 ──── 1010_2=10\begin{aligned} 0110\_{2} &= 6 \\\ \text{⊕} \ \ 1100\_{2} &= 12 \\\ \text{────} \\\ 1010\_{2} &= 10 \end{aligned}

예제2

  1. 예제 1

    입력
    6 4
    1 2 3 4 5 6
    
    예상 출력
    17
    
  2. 예제 2

    입력
    8 5
    12 45 71 23 53 7 25 9
    
    예상 출력
    217