3542. Maximum Value Sum by Placing Three Rooks II

Hard
Array
Dynamic Programming
Matrix
Enumeration

Description

You are given a m x n 2D array board representing a chessboard, where board[i][j] represents the value of the cell (i, j).

Rooks in the same row or column attack each other. You need to place three rooks on the chessboard such that the rooks do not attack each other.

Return the maximum sum of the cell values on which the rooks are placed.

 

Example 1:

Input: board = [[-3,1,1,1],[-3,1,-3,1],[-3,2,1,1]]

Output: 4

Explanation:

We can place the rooks in the cells (0, 2), (1, 3), and (2, 1) for a sum of 1 + 1 + 2 = 4.

Example 2:

Input: board = [[1,2,3],[4,5,6],[7,8,9]]

Output: 15

Explanation:

We can place the rooks in the cells (0, 0), (1, 1), and (2, 2) for a sum of 1 + 5 + 9 = 15.

Example 3:

Input: board = [[1,1,1],[1,1,1],[1,1,1]]

Output: 3

Explanation:

We can place the rooks in the cells (0, 2), (1, 1), and (2, 0) for a sum of 1 + 1 + 1 = 3.

 

Constraints:

  • 3 <= m == board.length <= 500
  • 3 <= n == board[i].length <= 500
  • -109 <= board[i][j] <= 109

Hints

Hint 1
Save the top 3 largest values in each row.
Hint 2
Select any row, and select any of the three values stored in it.
Hint 3
Get the top 4 values from all of the other 3 largest values of the other rows, which do not share the same column as the selected value.
Hint 4
Brute force the selection of 2 positions from the top 4 now.

Statistics

Acceptance
26.7%
Submissions
20,120
Accepted
5,371