python高精答案错误
查看原帖
python高精答案错误
582123
Njaso楼主2024/10/2 19:49

cpp 100pts代码转换成python,结果60pts,且不说超时的部分,不是很清楚为什么甚至还有wa

import numpy as np

if __name__=="__main__":
    n,m=map(int,input().split())
    dp=np.zeros((m+1,n+1,m+2,2))
    f=np.empty((n+1,m+1))
    # print(dp)
    for i in range(n):
        temp=list(map(int,input().split()))
        for j in range(m):
            f[i+1][j+1]=int(temp[j])
    
    # for i in range(1,n+1):
    #     for j in range(1,m+1):
    #         print(f"{int(f[i][j])} ",end="")
    #     print()

    for i in range(1,m+1):
        for j in range(1,n+1):
            for k in range(1,m+1):
                #左边
                cntr=i-k;
                r=m-cntr+1
                if r<=m+1 and r>k:
                    dp[i][j][k][0]=max(dp[i][j][k][0],dp[i-1][j][k-1][0]+f[j][k]*(1<<i))
                    dp[i][j][k][0]=max(dp[i][j][k][0],dp[i-1][j][r][1]+f[j][k]*(1<<i))
                #右边
                l=i-(m-k+1)
                if l>=0 and l<k:
                    dp[i][j][k][1]=max(dp[i][j][k][1],dp[i-1][j][k+1][1]+f[j][k]*(1<<i))
                    dp[i][j][k][1]=max(dp[i][j][k][1],dp[i-1][j][l][0]+f[j][k]*(1<<i))
    ans=0
    for i in range(1,n+1):
        mx=0
        for j in range(1,m+1):
            mx=max(mx,dp[m][i][j][0],dp[m][i][j][1])
        ans+=mx
    print(int(ans))
2024/10/2 19:49
加载中...