canuc80k4102·3/15

Các Toa Yên Tĩnh

Nộp bài trên LQDOJ

Bài 41 · Divide and Conquer DP and Knuth

Có hành khách đứng theo thứ tự từ đến . Bạn phải chia họ vào đúng toa, sao cho mỗi toa nhận một đoạn liên tiếp không rỗng của thứ tự ban đầu.

Ma trận mô tả mức xung đột giữa từng cặp hành khách. Ma trận đối xứng, . Nếu một toa chứa các hành khách từ đến , chi phí của toa là tổng trên mọi cặp . Tổng chi phí là tổng chi phí của toa.

Hãy tìm tổng chi phí nhỏ nhất.

Input

  • Dòng đầu chứa hai số nguyên và .
  • dòng tiếp theo, mỗi dòng là một chuỗi đúng chữ số. Chữ số thứ của dòng là .

Output

  • In ra một số nguyên: tổng chi phí nhỏ nhất.

Constraints

  • .
  • .
  • Mỗi ký tự ma trận là một chữ số từ đến .
  • và với mọi i, j.
  • Mỗi toa phải chứa ít nhất một hành khách.
  • Kết quả phù hợp với số nguyên có dấu bit.

Scoring

  • Subtask ( số điểm): .
  • Subtask ( số điểm): Không có giới hạn bổ sung.

Example

Test 1

Input

5 2
02879
20168
81027
76201
98710

Output

12

Giải thích: Chia thành hai toa và . Chi phí lần lượt là và , nên tổng bằng . Chia thành và cũng đạt ; các ranh giới còn lại đều có chi phí lớn hơn.

Lời giải tóm tắt
  • Tiền xử lý chi phí: Gọi W(l,r) là tổng xung đột của mọi cặp trong đoạn [l,r]. Ta lưu prefix sum cho từng hàng ma trận. Khi mở rộng [l,r-1] thành [l,r], các cặp mới chính xác là (i,r) với l≤i<r; tổng của chúng lấy trong O(1) từ prefix hàng r. Nhờ đó toàn bộ bảng W được tính trong O(N²).
  • Quy hoạch động và tối ưu: Đặt dp[g][r] là chi phí nhỏ nhất khi chia r hành khách đầu thành đúng g toa. Với điểm chia cuối p:
  • Quy hoạch động và tối ưu: dp[g][r] = min(dp[g-1][p] + W(p+1,r)).
  • Quy hoạch động và tối ưu: Do mọi phần tử ma trận không âm, W thỏa bất đẳng thức Monge: phần chênh lệch của hai vế bằng âm tổng trọng số giữa hai khối ngoài. Vị trí tối ưu trên mỗi hàng DP vì thế không giảm, cho phép tính hàng bằng Divide and Conquer.
  • Chứng minh đúng: Công thức tiền xử lý thêm đúng các cặp có đầu mút mới r, không bỏ sót và không đếm trùng. Mọi cách chia có duy nhất điểm chia cuối, nên recurrence xét đủ. Tính Monge bảo đảm khoảng tối ưu của thủ tục chia để trị luôn chứa nghiệm tốt nhất. Suy ra dp[K][N] là tổng nhỏ nhất.
  • Độ phức tạp: Tiền xử lý O(N²), DP O(KN log N), bộ nhớ O(N²).