第一版写了几个小时,一直WA
a,b,c,d=map(int,input().split())
e,f,g,h,aa=list(map(int,input().split())),list(map(int,input().split())),list(map(int,input().split())),list(map(int,input().split())),0
i,j,k,l=sum(e)//2,sum(f)//2,sum(g)//2,sum(h)//2
m,n,o,p=[[0 for q in range(a)] for r in range(i)],[[0 for s in range(b)] for t in range(j)],[[0 for u in range(c)] for v in range(k)],[[0 for w in range(d)] for x in range(l)]
if a==1:
aa+=e[0]
else:
for y in range(i):
for z in range(a):
if z==0:
if e[z]<=y+1:
m[y][z]=e[z]
elif e[z]<=y:
m[y][z]=max(m[y][z-1],m[y-e[z]][z-1]+e[z])
elif e[z]==y+1:
m[y][z]=y+1
else:
m[y][z]=m[y][z-1]
aa+=max(m[i-1][a-1],sum(e)-m[i-1][a-1])
if b==1:
aa+=f[0]
else:
for ab in range(j):
for ac in range(b):
if ac==0:
if f[ac]<=ab+1:
n[ab][ac]=f[ac]
elif f[ac]<=ab:
n[ab][ac]=max(n[ab][ac-1],n[ab-f[ac]][ac-1]+f[ac])
elif f[ac]==ab+1:
n[ab][ac]=ab+1
else:
n[ab][ac]=n[ab][ac-1]
aa+=max(n[j-1][b-1],sum(f)-n[j-1][b-1])
if c==1:
aa+=g[0]
else:
for ad in range(k):
for ae in range(c):
if ae==0:
if g[ae]<=ad+1:
o[ad][ae]=f[ae]
elif g[ae]<=ad:
o[ad][ae]=max(o[ad][ae-1],o[ad-g[ae]][ae-1]+g[ae])
elif g[ae]==ad+1:
o[ad][ae]=ad+1
else:
o[ad][ae]=o[ad][ae-1]
aa+=max(o[k-1][c-1],sum(g)-o[k-1][c-1])
if d==1:
aa+=h[0]
else:
for af in range(l):
for ag in range(d):
if ag==0:
if h[ag]<=af+1:
p[af][ag]=f[ag]
elif h[ag]<=af:
p[af][ag]=max(p[af][ag-1],p[af-h[ag]][ag-1]+h[ag])
elif h[ag]==af+1:
p[af][ag]=af+1
else:
p[af][ag]=p[af][ag-1]
aa+=max(p[l-1][d-1],sum(h)-p[l-1][d-1])
print(aa)
受不了了,被迫重新写起,十多分钟一次 AC 了
a,b,c,d=map(int,input().split())
e,f=list(map(int,input().split())),0
g=sum(e)//2
h=[[0 for i in range(a)] for j in range(g)]
if a==1:
f+=e[0]
else:
for k in range(g):
for l in range(a):
if l==0:
if e[l]<=k+1:
h[k][l]=e[l]
elif e[l]<=k:
h[k][l]=max(h[k][l-1],h[k-e[l]][l-1]+e[l])
elif e[l]==k+1:
h[k][l]=k+1
else:
h[k][l]=h[k][l-1]
f+=max(h[g-1][a-1],sum(e)-h[g-1][a-1])
e=list(map(int,input().split()))
g=sum(e)//2
h=[[0 for i in range(b)] for j in range(g)]
if b==1:
f+=e[0]
else:
for k in range(g):
for l in range(b):
if l==0:
if e[l]<=k+1:
h[k][l]=e[l]
elif e[l]<=k:
h[k][l]=max(h[k][l-1],h[k-e[l]][l-1]+e[l])
elif e[l]==k+1:
h[k][l]=k+1
else:
h[k][l]=h[k][l-1]
f+=max(h[g-1][b-1],sum(e)-h[g-1][b-1])
e=list(map(int,input().split()))
g=sum(e)//2
h=[[0 for i in range(c)] for j in range(g)]
if c==1:
f+=e[0]
else:
for k in range(g):
for l in range(c):
if l==0:
if e[l]<=k+1:
h[k][l]=e[l]
elif e[l]<=k:
h[k][l]=max(h[k][l-1],h[k-e[l]][l-1]+e[l])
elif e[l]==k+1:
h[k][l]=k+1
else:
h[k][l]=h[k][l-1]
f+=max(h[g-1][c-1],sum(e)-h[g-1][c-1])
e=list(map(int,input().split()))
g=sum(e)//2
h=[[0 for i in range(d)] for j in range(g)]
if d==1:
f+=e[0]
else:
for k in range(g):
for l in range(d):
if l==0:
if e[l]<=k+1:
h[k][l]=e[l]
elif e[l]<=k:
h[k][l]=max(h[k][l-1],h[k-e[l]][l-1]+e[l])
elif e[l]==k+1:
h[k][l]=k+1
else:
h[k][l]=h[k][l-1]
f+=max(h[g-1][d-1],sum(e)-h[g-1][d-1])
print(f)
一个惨痛的教训