提出 #64374143


ソースコード 拡げる

#!/usr/bin/env python
import os
import sys
from io import BytesIO, IOBase


def main():
    n = int(input())
    a = list(map(int,input().split()))
    asum = [0]
    for elem in a:
        asum.append(asum[-1] ^ elem)
    
    ans = [None] * (n * n)
    def getans(i, j):
        if i > j:
            return 0
        return ans[i * n + j]
    def setans(i, j, x):
        ans[i * n + j] = x

    for l in range(1, n + 1):
        for i in range(n - l + 1):
            start = i
            end = i + l - 1
            curans = float("inf")
            if l % 2 == 1:
                for j in range(0, l, 2):
                    curans = min(getans(start, start + j - 1) + getans(start + j + 1, end), curans)
                setans(start, end, curans)
            else:
                for j in range(2, l, 2):
                    curans = min(getans(start, start + j - 1) + getans(start + j, end), curans)
                for j in range(1, l, 2):
                    curans = min(getans(start, start + j - 1) + getans(start + j, end) + 2 * (asum[end + 1] ^ asum[start]), curans)
                setans(start, end, curans)
    if n % 2 == 0:
        print(getans(0, n - 1))
    if n % 2 == 1:
        print(getans(0, n - 1) + asum[-1])

# region fastio

BUFSIZE = 8192


class FastIO(IOBase):
    newlines = 0

    def __init__(self, file):
        self._file = file
        self._fd = file.fileno()
        self.buffer = BytesIO()
        self.writable = "x" in file.mode or "r" not in file.mode
        self.write = self.buffer.write if self.writable else None

    def read(self):
        while True:
            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
            if not b:
                break
            ptr = self.buffer.tell()
            self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
        self.newlines = 0
        return self.buffer.read()

    def readline(self):
        while self.newlines == 0:
            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
            self.newlines = b.count(b"\n") + (not b)
            ptr = self.buffer.tell()
            self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
        self.newlines -= 1
        return self.buffer.readline()

    def flush(self):
        if self.writable:
            os.write(self._fd, self.buffer.getvalue())
            self.buffer.truncate(0), self.buffer.seek(0)


class IOWrapper(IOBase):
    def __init__(self, file):
        self.buffer = FastIO(file)
        self.flush = self.buffer.flush
        self.writable = self.buffer.writable
        self.write = lambda s: self.buffer.write(s.encode("ascii"))
        self.read = lambda: self.buffer.read().decode("ascii")
        self.readline = lambda: self.buffer.readline().decode("ascii")


sys.stdin, sys.stdout = IOWrapper(sys.stdin), IOWrapper(sys.stdout)
input = lambda: sys.stdin.readline().rstrip("\r\n")

# endregion

if __name__ == "__main__":
    main()

提出情報

提出日時
問題 A - XOR Cross Over
ユーザ kclee2172
言語 Python (PyPy 3.10-v7.3.12)
得点 700
コード長 3082 Byte
結果 AC
実行時間 443 ms
メモリ 87912 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 700 / 700
結果
AC × 3
AC × 46
セット名 テストケース
Sample 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt
All 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_random_case_01.txt, 01_random_case_02.txt, 01_random_case_03.txt, 01_random_case_04.txt, 01_random_case_05.txt, 01_random_case_06.txt, 02_max_case_01.txt, 02_max_case_02.txt, 02_max_case_03.txt, 02_max_case_04.txt, 02_max_case_05.txt, 02_max_case_06.txt, 02_max_case_07.txt, 02_max_case_08.txt, 02_max_case_09.txt, 02_max_case_10.txt, 02_max_case_11.txt, 02_max_case_12.txt, 02_max_case_13.txt, 02_max_case_14.txt, 02_max_case_15.txt, 02_max_case_16.txt, 02_max_case_17.txt, 02_max_case_18.txt, 02_max_case_19.txt, 02_max_case_20.txt, 02_max_case_21.txt, 02_max_case_22.txt, 02_max_case_23.txt, 02_max_case_24.txt, 02_max_case_25.txt, 02_max_case_26.txt, 02_max_case_27.txt, 02_max_case_28.txt, 02_max_case_29.txt, 02_max_case_30.txt, 02_max_case_31.txt, 02_max_case_32.txt, 03_handmade_01.txt, 03_handmade_02.txt, 03_handmade_03.txt, 03_handmade_04.txt, 03_handmade_05.txt
ケース名 結果 実行時間 メモリ
00_sample_01.txt AC 55 ms 76676 KiB
00_sample_02.txt AC 56 ms 76752 KiB
00_sample_03.txt AC 58 ms 80516 KiB
01_random_case_01.txt AC 323 ms 86768 KiB
01_random_case_02.txt AC 90 ms 83360 KiB
01_random_case_03.txt AC 245 ms 86032 KiB
01_random_case_04.txt AC 404 ms 87004 KiB
01_random_case_05.txt AC 319 ms 85724 KiB
01_random_case_06.txt AC 391 ms 87368 KiB
02_max_case_01.txt AC 433 ms 87348 KiB
02_max_case_02.txt AC 420 ms 87640 KiB
02_max_case_03.txt AC 412 ms 87344 KiB
02_max_case_04.txt AC 443 ms 87604 KiB
02_max_case_05.txt AC 354 ms 87200 KiB
02_max_case_06.txt AC 424 ms 87532 KiB
02_max_case_07.txt AC 275 ms 85552 KiB
02_max_case_08.txt AC 427 ms 87564 KiB
02_max_case_09.txt AC 415 ms 87464 KiB
02_max_case_10.txt AC 355 ms 87420 KiB
02_max_case_11.txt AC 326 ms 87512 KiB
02_max_case_12.txt AC 324 ms 86772 KiB
02_max_case_13.txt AC 284 ms 86732 KiB
02_max_case_14.txt AC 387 ms 87660 KiB
02_max_case_15.txt AC 376 ms 87448 KiB
02_max_case_16.txt AC 435 ms 87128 KiB
02_max_case_17.txt AC 389 ms 87448 KiB
02_max_case_18.txt AC 383 ms 87740 KiB
02_max_case_19.txt AC 280 ms 86844 KiB
02_max_case_20.txt AC 419 ms 87600 KiB
02_max_case_21.txt AC 325 ms 87124 KiB
02_max_case_22.txt AC 407 ms 86984 KiB
02_max_case_23.txt AC 426 ms 87372 KiB
02_max_case_24.txt AC 429 ms 87204 KiB
02_max_case_25.txt AC 311 ms 87272 KiB
02_max_case_26.txt AC 420 ms 87492 KiB
02_max_case_27.txt AC 302 ms 87404 KiB
02_max_case_28.txt AC 282 ms 86752 KiB
02_max_case_29.txt AC 370 ms 87512 KiB
02_max_case_30.txt AC 322 ms 87124 KiB
02_max_case_31.txt AC 427 ms 87912 KiB
02_max_case_32.txt AC 319 ms 86920 KiB
03_handmade_01.txt AC 56 ms 76604 KiB
03_handmade_02.txt AC 56 ms 76372 KiB
03_handmade_03.txt AC 307 ms 87472 KiB
03_handmade_04.txt AC 385 ms 87440 KiB
03_handmade_05.txt AC 349 ms 87632 KiB