[Buổi 21][Cây Fenwick (Binary Indexed Tree)][HW] Bài 3: Đếm nghịch thế bằng chỉ số tần suất
Đếm nghịch thế bằng chỉ số tần suất
Bối cảnh và bài toán
Một dãy số phân biệt cần được đánh giá mức độ "lộn xộn". Mỗi cặp chỉ số i < j nhưng a[i] > a[j] được tính là một nghịch thế. Ở B12 ta đã biết một lời giải dựa trên merge; lần này mục tiêu là khai thác kiến thức cấu trúc truy vấn tần suất để nhìn lại cùng bài toán từ một góc khác.
Yêu cầu
Tính tổng số nghịch thế của dãy.
Input
- Dòng 1 chứa
n. - Dòng 2 chứa
nsố nguyên phân biệt.
Output
In số nghịch thế của dãy.
Ràng buộc
1 <= n <= 2 * 10^51 <= a[i] <= 10^9- Các giá trị đôi một khác nhau.
Chấm điểm
| Subtask | Điểm | Điều kiện | Official tests |
|---|---|---|---|
| S1 | 20% | n <= 30 | 01–04 |
| S2 | 30% | n <= 5000 | 05–10 |
| S3 | 50% | Không có ràng buộc bổ sung | 11–20 |
Ví dụ 1
Input
5
2 3 8 6 1
Output
5
Giải thích. Các nghịch thế là (2,1), (3,1), (8,6), (8,1), (6,1).
Ví dụ 2
Input
4
4 3 2 1
Output
6
Giải thích. Dãy giảm hoàn toàn có n(n-1)/2 = 6 nghịch thế.
Thông tin bài tập
| Thuộc tính | Giá trị |
|---|---|
| Mã bài | DSA-M07-B21-HW03 |
| Buổi | B21 |
| Loại bài | HOMEWORK |
| Mức độ khó | Trung bình (Medium) |
| Thời gian làm bài khuyến nghị | 45 phút |
| Time limit | 3 giây |
| Memory limit | 256 MB |
| Tổng điểm | 100 |
| Chuẩn ngôn ngữ tham chiếu | C++11 trở lên |
Nguồn: Phỏng theo SPOJ INVCNT – Inversion Count.
Comments