Q3 em làm O(n^4) TLE, xong mới nghĩ ra cách quy về ma trận 3xN. Nhưng vẫn ko xong Q4.Bài 3 TLE quá![]()


Đỉnh quá mai fenceQ3 em làm O(n^4) TLE, xong mới nghĩ ra cách quy về ma trận 3xN. Nhưng vẫn ko xong Q4.
mẹ nó nghĩ éo ra gì cảMỗi hàng hay cột bác chỉ cần quan tâm 3 ô lớn nhất ấy. Em nghĩ ra cái này sau khi ăn 3 bọ khi cố tối ưu cách O(N^4) kia.
. Làm O(m*n + m^3), sai ngu ngay chỗ tìm 3 thằng lớn nhất mỗi dòng không kịp sửa 
class Solution:
def maximumValueSum(self, A: List[List[int]]) -> int:
m, n = len(A), len(A[0])
ans = float("-inf")
max_val = [[float("-inf")] * 3 for _ in range(m)]
max_cols = [[-1] * 3 for _ in range(m)]
for i in range(m):
cols = [(A[i][j], j) for j in range(n)]
cols.sort(reverse=True)
for k in range(min(3, n)):
max_val[i][k] = cols[k][0]
max_cols[i][k] = cols[k][1]
for r1 in range(m):
for r2 in range(r1 + 1, m):
for r3 in range(r2 + 1, m):
for i in range(3):
for j in range(3):
if max_cols[r2][j] == max_cols[r1][i]:
continue
for k in range(3):
if (max_cols[r3][k] == max_cols[r1][i] or
max_cols[r3][k] == max_cols[r2][j]):
continue
current_sum = (max_val[r1][i] +
max_val[r2][j] +
max_val[r3][k])
ans = max(ans, current_sum)
return ans
Cái này mà ko duy trì rất dễ gãy, mình 2 tháng ko join phải xài clone thi lại 1 contest với luyện dần dần để thi, toang ácHơn 1 tháng ko join contest, giờ solve được có 2Q, thậm chí mình còn hơi trầy trật với Q2. Toang ác.
Dân CP chuyên nghiệp có khác giải dễ hiểu hẳn
Em đọc thấy bác này làm Q4 ảo thật, thu gọn dần tập ô quan tâm để đến cuối chỉ còn đúng 9 ô thôi.
