Trò chơi trên ma trận

Xem dạng PDF

Gửi bài giải


Điểm: 0,22 (OI)
Giới hạn thời gian: 0.38s
Giới hạn bộ nhớ: 512M
Input: stdin
Output: stdout

Nguồn bài:
Võ Khánh Trung
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Ngày nay các nhà khoa học đã nghĩ ra 1 trò chơi trên ma trận rất thú vị. Thông qua đó có thể đo IQ một cách khá hiệu quả. Trò chơi được mô tả như sau:

Bạn có ~1~ ma trận ~A~ kích thước ~8 \times N~ trên đó gồm các số nguyên là điểm của các ô đó. Người ta sẽ yêu cầu bạn chọn ~1~ tập khác rỗng các ô trên ma trận này sau đó tính tổng điểm trên những ô này. Trong những ô được chọn không có hai ô nào kề cạnh. IQ của người chơi sẽ tỉ lệ thuận với số điểm nhận được. Sherry tham gia trò chơi và đạt kết quả khá tốt. Bây giờ Sherry muốn biết tổng điểm lớn nhất nhận được trong trò chơi này là bao nhiêu. Bạn hãy giúp Sherry nhé!!!

Input

Dòng đầu tiên là số nguyên ~N~ ~(1 \le N \le 10000)~.

~8~ dòng tiếp theo: Mỗi dòng gồm ~N~ số nguyên. Số nguyên ở hàng ~i~, cột ~j~ là ~A_{ij}~ ~(|A_{ij}| \le 10^{8})~.

Output

Gồm ~1~ dòng duy nhất là số điểm lớn nhất tìm được.

Sample Input

2
-22 2
-33 45
56 -60
-8 -38
79 66
-10 -23
99 46
1 -55

Sample Output

279

Note

Chọn các ô ~(3,1)~ ~(5,1)~ ~(7,1)~ ~(2,2)~.


Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    tunbeo2021  đã bình luận lúc 29, Tháng 10, 2025, 16:41

    dp bit mask, mai lam


  • 9
    hxano  đã bình luận lúc 14, Tháng 8, 2025, 14:14 sửa 2

    Bonus: Bài toán tổng quát hơn với giới hạn tổng số ô không vượt quá ~20000~ (số hàng và số cột tự do) cũng có thể giải được trong giới hạn này.

    Hint ~1~:

    Mô hình hóa bài toán thành một bài toán lát cắt cực tiểu. Rõ ràng ta không bao giờ cần chọn các ô có giá trị âm nên ta có thể an toàn bỏ qua chúng khi thiết kế mô hình.

    Hint ~2~:

    Thay vì chọn/không chọn các ô, ta có thể chọn tất cả các ô (có giá trị dương) trước, sau đó loại bỏ một tập hợp con của các ô được chọn sao cho: Tổng giá trị các ô bị loại bỏ nhỏ nhất, và sau khi loại bỏ các ô này thì không có hai ô được chọn (còn lại) nào có chung cạnh.

    Hint ~3~:

    Gọi đỉnh nguồn là ~s~, đỉnh ngọn là ~t~. Nối từ ~s~ đến tất cả các ô ~(i,j)~ có ~(i+j)~ chẵn với trọng số là ~a(i,j)~, từ tất cả các ô ~(u,v)~ có ~(u+v)~ lẻ đến ~t~ với trọng số là ~a(u,v)~. Để mô phỏng ràng buộc đề bài, nối tất cả các cặp ô kề nhau bằng một cạnh đi từ nút "chẵn" đến nút "lẻ" có trọng số là ~\infty~.

    Hint ~4~:

    Đáp án là tổng trọng số tất cả các cạnh trừ đi lát cắt cực tiểu.

    Phân tích độ phức tạp:

    Gọi ~S~ là số ô trên ma trận ban đầu. Ta biết được số nút và số cạnh trên mạng thuộc ~O(S)~. Vì mạng là một đồ thị hai phía nên ta có thể áp dụng thuật toán Dinic with Scaling để đạt độ phức tạp ~O(S \cdot \sqrt S \cdot log(maxA \cdot S))~.


  • -7
    phannam310810  đã bình luận lúc 5, Tháng 6, 2025, 6:11

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -7
    hl_ninhvan_lequangtu  đã bình luận lúc 6, Tháng 5, 2025, 5:29

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • 7
    khactrung1912  đã bình luận lúc 23, Tháng 6, 2023, 9:47

    Bài này em nghĩ nếu được thì nên thêm test có trường hợp không chọn phần tử cột cuối cùng vẫn đạt được kết quả lớn nhất ạ, code e không xét trường hợp này vẫn AC ạ


  • -24
    Thaidz  đã bình luận lúc 18, Tháng 4, 2023, 15:05

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -33
    Rukashi  đã bình luận lúc 27, Tháng 8, 2022, 6:25

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -28
    thanh20092007  đã bình luận lúc 14, Tháng 8, 2022, 14:31

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -30
    PPAP_1264589  đã bình luận lúc 25, Tháng 5, 2021, 4:13 sửa 5

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.