Hướng dẫn giải của Tập Con Cân Bằng
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Lời giải: Tập con cân bằng
Hướng tiếp cận
Bài toán yêu cầu đếm số tập con thỏa mãn 4 điều kiện. Ta sẽ phân tích cấu trúc của tập con hợp lệ rồi dùng quy hoạch động.
Nhận xét quan trọng
Nhận xét 1: Trong mỗi hàng có ít nhất một ô thuộc tập con, tập hợp các ô đó phải tạo thành một đoạn liên tục (từ điều kiện 3 và 4).
Nhận xét 2: Các hàng chứa ô thuộc tập con phải là liên tiếp nhau (từ điều kiện 2 - liên thông 4 chiều).
Nhận xét 3: Hai hàng liên tiếp và phải có đoạn giao nhau: và .
Nhận xét 4 (quan trọng nhất): Dãy phải là dãy lưỡng điệu giảm rồi tăng (non-increasing rồi non-decreasing). Tương tự, dãy phải là dãy lưỡng điệu tăng rồi giảm.
Chứng minh nhận xét 4: Nếu có dạng tăng-giảm-tăng (không đơn điệu 2 pha), thì tồn tại sao cho và . Từ điều kiện 3, cột xuất hiện ở hàng nhưng không xuất hiện ở hàng hay . Tuy nhiên để liên thông, phải có đường đi từ một ô ở hàng qua hàng đến hàng , mà đường đi đó khi đi qua cột sẽ tạo ra các ô ở cột ở tất cả các hàng giữa — mâu thuẫn. Lập luận tương tự cho .
Thuật toán
Trạng thái DP: = số tập con cân bằng có hàng đáy là hàng hiện tại , đoạn cột của hàng đáy là , trong đó:
- : dãy vẫn đang trong pha không tăng; : dãy đã chuyển sang pha không giảm
- : dãy vẫn đang trong pha không giảm; : dãy đã chuyển sang pha không tăng
Chuyển trạng thái: Từ hàng sang hàng , nếu hàng trước có đoạn và hàng hiện tại có đoạn :
| Từ | Sang | Điều kiện |
|---|---|---|
| , | ||
| , | ||
| , | ||
| , | ||
| , | ||
| , | ||
| , | ||
| , | ||
| , |
Tối ưu hoá: Mỗi truy vấn chuyển trạng thái là tổng một vùng chữ nhật trên mảng . Ta dùng 4 loại bảng prefix sum (suffix-L prefix-R, suffix-L suffix-R, prefix-L prefix-R, prefix-L suffix-R) để trả lời mỗi truy vấn trong . Tổng độ phức tạp là .
Mỗi hàng : xây dựng bảng prefix sum , rồi duyệt tất cả hợp lệ với chuyển trạng thái → tổng .
Độ phức tạp
- Thời gian:
- Bộ nhớ: cho bảng DP và prefix sum
Bình luận