USACO 2019 - Balancing Inversions

Xem PDF



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, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2400 (p) Thời gian: 4.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Bessie và Elsie đang chơi một trò chơi trên mảng Boolean \(A\) có độ dài \(2N\) (\(1 \leq N \leq 10^5\)). Điểm của Bessie là số nghịch thế trong nửa đầu của \(A\), còn điểm của Elsie là số nghịch thế trong nửa sau của \(A\). Một nghịch thế là một cặp phần tử \(A[i]=1\)\(A[j]=0\) với \(i<j\). Ví dụ, một mảng gồm một đoạn toàn số 0 theo sau bởi một đoạn toàn số 1 không có nghịch thế nào, còn một mảng gồm một đoạn có \(X\) số 1 theo sau bởi một đoạn có \(Y\) số 0 thì có \(XY\) nghịch thế.

Farmer John tình cờ bắt gặp bàn chơi và tò mò muốn biết số lần đổi chỗ hai phần tử kề nhau ít nhất cần thực hiện để trò chơi trông như đã hòa. Hãy giúp Farmer John tìm câu trả lời cho câu hỏi này.

Dữ liệu vào

Dòng đầu tiên chứa \(N\), và dòng tiếp theo chứa \(2N\) số nguyên, mỗi số bằng 0 hoặc 1.

Dữ liệu ra

In ra số lần đổi chỗ hai phần tử kề nhau cần thiết để trò chơi hòa.

Ví dụ

Ví dụ 1

Input
5
0 0 0 1 0 1 0 0 0 1
Output
1
Giải thích

Trong ví dụ này, ban đầu nửa đầu của mảng có \(1\) nghịch thế, còn nửa sau có \(3\) nghịch thế. Sau khi đổi chỗ bit thứ \(5\) và bit thứ \(6\) cho nhau, cả hai mảng con đều có \(0\) nghịch thế.

Nguồn

USACO 2019 US Open Contest, Gold — Balancing Inversions

Tác giả: Dhruv Rohatgi.

Bình luận

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

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

Kỳ thi: