大佬们,可以帮忙看看我的代码有什么问题吗,全部wa了,自己实在调不出来
查看原帖
大佬们,可以帮忙看看我的代码有什么问题吗,全部wa了,自己实在调不出来
511664
beach_ice_tea_guitar楼主2024/3/21 20:20

大佬们,可以帮忙看看我的代码有什么问题吗,全部wa了,自己实在调不出来

n, m = map(int, input().split())
a = [[0, 0, 0]]
data = []
for i in range(n):
    data.append(input())
# 使用前缀和统计前i行WBR的数量
for line in data:
    b = [a[-1][0], a[-1][1], a[-1][2]]
    for e in line:
        if e == 'W':
            b[0] += 1
        elif e == 'B':
            b[1] += 1
        else:
            b[2] += 1
    a.append(b)

ans = 99999999

# 搜索W所占行数,范围是[1,n-2]
for i in range(1, n - 1):
    # 计算将前i行涂成W的代价
    to_W = i * m - (a[i][0] - a[0][0])
    # 搜索B所占行数,范围也是[1,n-2]
    for j in range(1, n - 1):
        # 计算将从i+1到i+j行涂成B的代价
        to_B = j * m - (a[i + j][1] - a[i][1])
        # 剩余行数不足一行就退出循环
        if i + j >= n:
            break
        # 计算将从i+j+1到n行涂成R的代价
        to_R = (n - i - j) * m - (a[n][2] - a[i + j][2])
        ans = min(ans, to_W + to_B + to_R)
print(ans)
2024/3/21 20:20
加载中...