재밌는 계단수들
This commit is contained in:
18
zeta_python/completed/12865.py
Normal file
18
zeta_python/completed/12865.py
Normal file
@@ -0,0 +1,18 @@
|
||||
N, K = map(int, input().split())
|
||||
Ws = [tuple(map(int, input().split())) for i in range(N)] # weight, value
|
||||
|
||||
D = [[0] * (K + 1) for _ in range(N + 1)]
|
||||
|
||||
|
||||
def solve(k):
|
||||
global D
|
||||
for n in range(1, N + 1):
|
||||
for k in range(1, K + 1):
|
||||
if Ws[n - 1][0] <= k:
|
||||
D[n][k] = max(Ws[n - 1][1] + D[n - 1][k - Ws[n - 1][0]], D[n - 1][k])
|
||||
else:
|
||||
D[n][k] = D[n - 1][k]
|
||||
return D[N][K]
|
||||
|
||||
|
||||
print(solve(K))
|
||||
17
zeta_python/completed/1562.py
Normal file
17
zeta_python/completed/1562.py
Normal file
@@ -0,0 +1,17 @@
|
||||
N = int(input())
|
||||
|
||||
D = [[0] * (1 << 10) for _ in range(10)]
|
||||
|
||||
for i in range(1, 10):
|
||||
D[i][1 << i] = 1
|
||||
|
||||
for i in range(0, N - 1):
|
||||
Dn = [[0] * (1 << 10) for _ in range(10)]
|
||||
for n in range(10):
|
||||
for m in range(1024):
|
||||
if n < 9:
|
||||
Dn[n][m | (1 << n)] += D[n + 1][m] % 1000000000
|
||||
if n > 0:
|
||||
Dn[n][m | (1 << n)] += D[n - 1][m] % 1000000000
|
||||
D = Dn
|
||||
print(sum([D[i][1023] for i in range(10)]) % 1000000000)
|
||||
23
zeta_python/completed/18244.py
Normal file
23
zeta_python/completed/18244.py
Normal file
@@ -0,0 +1,23 @@
|
||||
N = int(input())
|
||||
|
||||
Mem = [[[-1] * 5 for _ in range(0, 10)] for _ in range(N)]
|
||||
|
||||
|
||||
def I(l, k, b):
|
||||
if b > 2 or b < -2:
|
||||
return 0
|
||||
if l == 0:
|
||||
return 1
|
||||
if Mem[l - 1][k][b] != -1:
|
||||
return Mem[l - 1][k][b]
|
||||
|
||||
re = 0
|
||||
if 0 < k:
|
||||
re += I(l - 1, k - 1, b - 1 if b < 0 else -1) % 1000000007
|
||||
if k < 9:
|
||||
re += I(l - 1, k + 1, b + 1 if b > 0 else 1) % 1000000007
|
||||
Mem[l - 1][k][b] = re
|
||||
return re
|
||||
|
||||
|
||||
print(sum(I(N - 1, i, 0) for i in range(0, 10)) % 1000000007)
|
||||
Reference in New Issue
Block a user