Gửi bài giải


Điểm: 18
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
đầu vào: stdin
Đầu ra: stdout

Tác giả:
Kiểu bài tập

Cho một dãy gồm \(N\) số nguyên không âm \(a_1, a_2, \dots, a_N\). Bạn cần phân chia dãy số này thành đúng \(K\) đoạn con liên tiếp, không rỗng.

Mỗi đoạn con \(a[l..r]\) có chi phí nén là giá trị XOR tích lũy của tất cả các phần tử trong đoạn: \(\text{cost}(l, r) = a_l \oplus a_{l+1} \oplus \dots \oplus a_r\)

Tổng chi phí của cách chia là tổng chi phí của cả \(K\) đoạn con. Hãy tìm cách phân chia sao cho tổng chi phí là nhỏ nhất.

Định dạng đầu vào

  • Dòng thứ nhất chứa hai số nguyên \(N\) và K (\(1 \le K \le 200, K \le N \le 10^5\)).
  • Dòng thứ hai chứa \(N\) số nguyên \(a_1, a_2, \dots, a_N\) (\(0 \le a_i < 2^{30}\)).

Định dạng đầu ra

  • In ra một số nguyên duy nhất là tổng chi phí nhỏ nhất tìm được.

Ví dụ

Input:

5 2
1 2 3 4 5

Output:

1

Giải thích: Chia thành 2 đoạn: \([1, 2, 3]\) và \([4, 5]\).

  • Chi phí đoạn 1: \(1 \oplus 2 \oplus 3 = 0\).
  • Chi phí đoạn 2: \(4 \oplus 5 = 1\).
  • Tổng chi phí: \(0 + 1 = 1\).

Ràng buộc & Subtasks

Subtask Điểm Ràng buộc
1 20 \(N \le 100, K \le 10\)
2 30 \(N \le 5000, K \le 50\)
3 50 \(N \le 10^5, K \le 200\)

Nhận xét

Không có ý kiến tại thời điểm này.