提出 #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 |
| 結果 |
|
|
| セット名 |
テストケース |
| 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 |