Trò chơi kAND

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2100 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Alice và Bob cùng chơi một trò chơi trên dãy số nguyên. Alice muốn nhanh chóng tìm được một đoạn gồm các phần tử liên tiếp mà khi tính AND (\(\&\)) của các phần tử đó bằng \(0\). Bob thì tìm cách thay đổi các số làm khó Alice. Cụ thể, Bob muốn nhờ bạn lập trình giải các bài toán sau:

Cho số nguyên \(k\) (\(1 \le k \le n\)) và hai dãy số \(a\)\(c\) có cùng độ dài \(n\). Với mỗi vị trí \(i\) (\(1 \le i \le n\)) ta có thể thay đổi \(a_i\) thành giá trị bất kì với chi phí là \(c_i\). Tìm tổng chi phí nhỏ nhất để thay đổi dãy \(a\) sao cho \(a_i\) \(\&\) \(a_{i+1}\) \(\&\) \(...\) \(\&\) \(a_{i+k-1} = 0\) với mọi \(1 \le i \le n-k+1\).

Nhắc lại, phép toán AND (có kí hiệu là \(\&\)) được định nghĩa như sau: Kết quả của phép toán AND giữa hai số nguyên không âm \(x\)\(y\) là một số nguyên không âm \(z\) trong đó bit thứ \(i\) trong biểu diễn nhị phân của \(z\) sẽ là \(1\) khi vào chỉ khi bit thứ \(i\) trong biểu diễn nhị phân của \(x\)\(y\) đồng thời bằng \(1\), ngược lại bit thứ \(i\) trong biểu diễn nhị phân của \(z\) sẽ là \(0\).

Input

  • Dòng đầu tiên là một số nguyên \(t\) (\(1 \le t \le 10^6\)) là số bộ dữ liệu, tiếp theo mỗi bộ có dạng:
    • Dòng đầu tiên gồm hai số nguyên \(n\)\(k\) (\(1 \le k \le n \le 10^6\)).
    • Dòng thứ hai gồm \(n\) số nguyên \(a_1, a_2, ..., a_n\) (\(0 \le a_i < 2^{30}\)).
    • Dòng cuối cùng gồm \(n\) số nguyên \(c_1, c_2, ..., c_n\) (\(0 \le c_i < 2^{30}\)).

Output

  • Gồm \(t\) dòng, mỗi dòng tương ứng là tổng chi phí nhỏ nhất tìm được của bộ dữ liệu xuất hiện trong dữ liệu vào.

Scoring

  • Subtask \(1\) (\(20\%\) số điểm): Tổng các giá trị của \(n\) trong \(t\) bộ dữ liệu không vượt quá \(20\).
  • Subtask \(2\) (\(20\%\) số điểm): \(c_i \le 1\) với mọi \(1 \le i \le n\).
  • Subtask \(3\) (\(30\%\) số điểm): Tổng các giá trị của \(n\) trong \(t\) bộ dữ liệu không vượt quá \(5000\).
  • Subtask \(4\) (\(30\%\) số điểm): Không có ràng buộc gì thêm.

Example

Test 1

Input
1
5 2
1 2 3 2 1
3 2 5 2 3
Output
4

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.