#1666. DÃY NHỊ PHÂN (MINSKIP)

Bộ nhớ: 512 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Cho một dãy số A gồm n phần tử, trong đó mỗi phần tử A_i \in \{0, 1\} . Hai người chơi, gọi là Người thứ nhất ( P_1 ) và Người thứ hai ( P_2 ), thực hiện xử lý các phần tử của dãy số theo thứ tự từ chỉ số 1 đến n .

Quy tắc xử lý như sau:

  1. Người thứ nhất ( P_1 ) luôn là người bắt đầu trước. Hai người luân phiên nhau thực hiện lượt đi của mình.
  2. Trong mỗi lượt, người chơi hiện tại phải chọn xử lý 1 hoặc 2 phần tử kế tiếp chưa được xử lý trong dãy.
  3. Chi phí (Cost):
    • Nếu P_1 xử lý phần tử A_i , chi phí cộng thêm là A_i .
    • Nếu P_2 xử lý phần tử A_i , chi phí cộng thêm luôn là 0 .

Yêu cầu: Hãy tìm tổng chi phí tối thiểu để xử lý hết toàn bộ n phần tử của dãy A .

Dữ liệu:

  • Dòng đầu tiên chứa số nguyên t ( 1 \le t \le 10^4 ) — số lượng bộ dữ liệu (test cases).
  • Mỗi bộ dữ liệu gồm hai dòng:
    • Dòng đầu chứa số nguyên n ( 1 \le n \le 2 \cdot 10^5 ).
    • Dòng thứ hai chứa n số nguyên A_1, A_2, \dots, A_n ( A_i \in \{0, 1\} ).
  • Tổng của n trên tất cả các bộ dữ liệu không vượt quá 2 \cdot 10^5 .

Kết quả:

  • Với mỗi bộ dữ liệu, in ra một số nguyên duy nhất là tổng chi phí tối thiểu đạt được.

Ví dụ:

Dữ liệu:

2
8
1 0 1 1 0 1 1 1
5
1 1 1 1 1

Kết quả:

2
2

Giải thích:

  • Ví dụ 1: Một chiến thuật tối ưu là: P_1 xử lý \{A_1\} , P_2 xử lý \{A_2, A_3\} , P_1 xử lý \{A_4\} , P_2 xử lý \{A_5, A_6\} , P_1 xử lý \{A_7\} , P_2 xử lý \{A_8\} . Tổng chi phí: A_1 + A_4 + 0 = 1 + 1 + 0 = 2 .
  • Ví dụ 2: P_1 xử lý \{A_1\} , P_2 xử lý \{A_2, A_3\} , P_1 xử lý \{A_4\} , P_2 xử lý \{A_5\} . Chi phí: A_1 + A_4 = 1 + 1 = 2 .

Giới hạn:

  • Subtask #1 (20% số điểm): n \le 20 và tổng n \le 400 .
  • Subtask #2 (15% số điểm): A_i = 1 với mọi 1 \le i \le n .
  • Subtask #3 (25% số điểm): n \le 2000 và tổng n \le 2000 .
  • Subtask #4 (40% số điểm): Không có ràng buộc bổ sung.