結果
問題 | No.1606 Stuffed Animals Keeper |
ユーザー | kyaneko999 |
提出日時 | 2021-07-16 22:24:27 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 202 ms / 3,000 ms |
コード長 | 3,656 bytes |
コンパイル時間 | 289 ms |
コンパイル使用メモリ | 87,244 KB |
実行使用メモリ | 80,216 KB |
最終ジャッジ日時 | 2023-09-20 14:38:33 |
合計ジャッジ時間 | 10,556 ms |
ジャッジサーバーID (参考情報) |
judge12 / judge11 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 145 ms
78,696 KB |
testcase_01 | AC | 144 ms
78,772 KB |
testcase_02 | AC | 143 ms
78,524 KB |
testcase_03 | AC | 189 ms
80,140 KB |
testcase_04 | AC | 190 ms
79,908 KB |
testcase_05 | AC | 162 ms
80,124 KB |
testcase_06 | AC | 170 ms
80,092 KB |
testcase_07 | AC | 185 ms
80,000 KB |
testcase_08 | AC | 180 ms
79,876 KB |
testcase_09 | AC | 167 ms
79,772 KB |
testcase_10 | AC | 158 ms
80,096 KB |
testcase_11 | AC | 158 ms
79,696 KB |
testcase_12 | AC | 168 ms
79,856 KB |
testcase_13 | AC | 143 ms
79,108 KB |
testcase_14 | AC | 143 ms
79,248 KB |
testcase_15 | AC | 141 ms
79,052 KB |
testcase_16 | AC | 195 ms
80,012 KB |
testcase_17 | AC | 198 ms
80,092 KB |
testcase_18 | AC | 202 ms
79,844 KB |
testcase_19 | AC | 197 ms
80,004 KB |
testcase_20 | AC | 196 ms
79,848 KB |
testcase_21 | AC | 162 ms
79,360 KB |
testcase_22 | AC | 163 ms
79,588 KB |
testcase_23 | AC | 162 ms
79,732 KB |
testcase_24 | AC | 162 ms
79,252 KB |
testcase_25 | AC | 169 ms
79,536 KB |
testcase_26 | AC | 156 ms
79,560 KB |
testcase_27 | AC | 156 ms
79,304 KB |
testcase_28 | AC | 157 ms
79,332 KB |
testcase_29 | AC | 160 ms
79,356 KB |
testcase_30 | AC | 156 ms
79,640 KB |
testcase_31 | AC | 162 ms
79,564 KB |
testcase_32 | AC | 150 ms
79,428 KB |
testcase_33 | AC | 151 ms
79,692 KB |
testcase_34 | AC | 154 ms
79,656 KB |
testcase_35 | AC | 156 ms
79,340 KB |
testcase_36 | AC | 154 ms
79,624 KB |
testcase_37 | AC | 161 ms
79,756 KB |
testcase_38 | AC | 161 ms
79,652 KB |
testcase_39 | AC | 150 ms
79,292 KB |
testcase_40 | AC | 150 ms
79,612 KB |
testcase_41 | AC | 152 ms
79,720 KB |
testcase_42 | AC | 150 ms
79,636 KB |
testcase_43 | AC | 195 ms
80,100 KB |
testcase_44 | AC | 192 ms
80,068 KB |
testcase_45 | AC | 192 ms
80,216 KB |
testcase_46 | AC | 193 ms
80,056 KB |
testcase_47 | AC | 196 ms
80,008 KB |
testcase_48 | AC | 143 ms
78,852 KB |
testcase_49 | AC | 147 ms
78,956 KB |
testcase_50 | AC | 143 ms
78,156 KB |
ソースコード
from sys import exit, stdin, setrecursionlimit from collections import deque, defaultdict, Counter from copy import deepcopy from bisect import bisect_left, bisect_right, insort_left, insort_right from heapq import heapify, heappop, heappush from itertools import product, permutations, combinations, combinations_with_replacement from functools import reduce from math import gcd, sin, cos, tan, asin, acos, atan, atan2, degrees, radians, ceil, floor, sqrt, factorial from math import pi as PI from random import randint # from decimal import Decimal setrecursionlimit(500000) INF = (1<<61)-1 EPS = 1e-10 MOD = 10**9+7 # MOD = 998244353 def input(): return stdin.readline()[:-1] def intput(): return int(stdin.readline()) def minput(): return stdin.readline()[:-1].split() def linput(): return stdin.readline()[:-1].split() def mint(): return map(int,stdin.readline().split()) def lint(): return list(map(int,stdin.readline().split())) def ilint(): return int(stdin.readline()), list(map(int,stdin.readline().split())) def lcm(x,y): return x*y//gcd(x,y) def lgcd(l): return reduce(gcd,l) def llcm(l): return reduce(lcm,l) def powmod(n,i,mod=MOD): return pow(n,mod-1+i,mod) if i<0 else pow(n,i,mod) def div2(x): return x.bit_length() def div10(x): return len(str(x))-(x==0) def popcount(x): return bin(x).count('1') def digit(x,i,max_len=None): s = str(x) if max_len: i -= max_len-len(s) return int(s[i-1]) if i>0 else 0 def digitsum(x): ans = 0 for i in range(div10(x)): ans += digit(x,i+1) return ans def pf(x,mode='counter'): C = Counter() p = 2 while x>1: k = 0 while x%p==0: x //= p k += 1 if k>0: C[p] += k p = p+2-(p==2) if p*p<x else x if mode=='counter': return C S = set([1]) for k in C: T = set() for x in S: for i in range(C[k]+1): T.add(x*(k**i)) S = T if mode=='set': return S if mode=='list': return sorted(S) def isprime(x): if x<2: return False return len(pf(x,'set'))==2 def matmul(A, B): # import numpy A1, A2 = A >> 15, A & (1 << 15) - 1 B1, B2 = B >> 15, B & (1 << 15) - 1 X = np.dot(A1, B1) % MOD Y = np.dot(A2, B2) Z = np.dot(A1 + A2, B1 + B2) - X - Y return ((X << 30) + (Z << 15) + Y) % MOD def matpow(A, N): P = np.eye(A.shape[0], dtype=np.int64) while N: if N & 1: P = matmul(P, A) A = matmul(A, A) N >>= 1 return P def zash(S): lis = sorted(S) dic = {} for i,x in enumerate(lis): dic[x] = i return lis, dic def pr(*x): print(*x, sep='', end='') if len(x) else print() def lprint(l): for x in l: print(x) def ston(c, c0='a'): return ord(c)-ord(c0) def ntos(x, c0='a'): return chr(x+ord(c0)) def judge(x, l=['Yes', 'No']): print(l[0] if x else l[1]) def debug(*x, flag=1): if flag: print(*x) ###################################################### N,A=ilint() M=5000 l=[] left=0 right=0 all_right=0 for a in A: if a==0: left+=1 right+=1 elif a==1: left+=1 elif left>0: l.append([left,right]) all_right+=right left=0 right=0 if left>0: l.append([left,right]) all_right+=right dp=[INF]*(M+1) dp[0]=0 for left,right in l: nxt=[INF]*(M+1) for v in range(M+1): if dp[v]<INF: nxt[v]=min(nxt[v],dp[v]) nxt[v+left]=min(nxt[v+left],dp[v]+left-right) dp=nxt ans=dp[all_right] print(ans if ans<INF else -1)