| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | Công Giải Thể (Ôn tập OLP MT&TN lần 7) | 100 (p) | 1.0s | 512M |
| 2 | Hoán vị đẹp (Ôn tập OLP MT&TN lần 7) | 100 (p) | 1.0s | 512M |
| 3 | Bộ thẻ cân bằng (Ôn tập OLP MT&TN lần 7) | 100 (p) | 1.0s | 512M |
Cô giáo Mẫn đang dẫn dắt team phát triển phần mềm đọc báo SetNews. Để tối ưu hóa trải nghiệm người dùng, team quyết định khảo sát sở thích đọc tin tức của \(N\) người dùng thử nghiệm trên hệ thống. Trái với dự đoán ban đầu, dữ liệu cho thấy mỗi người dùng thử nghiệm đều quan tâm đến ít nhất một trong ba chuyên mục chính: Thể thao, Giải trí và Công nghệ.
Kết quả thống kê chi tiết cho thấy có \(c_1\) người thích đọc Thể thao, \(c_2\) người thích Giải trí, và \(c_3\) người thích Công nghệ. Hệ thống phân tích sự giao thoa cũng ghi nhận được có \(x\) người vừa thích Thể thao vừa thích Giải trí, \(y\) người vừa thích Giải trí vừa thích Công nghệ, và \(z\) người vừa thích Công nghệ vừa thích Thể thao.
Tuy nhiên, do một lỗi truy vấn cơ sở dữ liệu của ứng dụng SetNews, cô giáo Mẫn đã không thể đếm được số lượng người dùng có đam mê đọc cả ba chuyên mục cùng lúc. Bạn hãy giúp team phát triển viết một đoạn chương trình để tính toán chính xác con số bị thiếu này nhé.
Test 1
7 6 5 5 4 4 4
3
Cấu hình sở thích của 7 người dùng thử nghiệm có thể được liệt kê chi tiết như sau:
Từ danh sách trên, ta thấy có chính xác 3 người dùng yêu thích cả ba chuyên mục cùng lúc.
Để tối ưu hóa thuật toán đề xuất bài viết cho phần mềm SetNews, cô Mẫn và team phát triển đang phải đau đầu giải quyết một bài toán tổ hợp cốt lõi mang tên "Hoán vị đẹp".
Trong bài toán này, một hoán vị \(P\) của tập hợp các số nguyên từ \(1\) đến \(n\) được gọi là "đẹp" nếu nó có đúng \(m\) cặp nghịch thế. Một cặp nghịch thế (inversion) là một cặp chỉ số \((i, j)\) thỏa mãn \(1 \le i < j \le n\) và \(P_i > P_j\).
Ví dụ, hoán vị \(P = (1, 4, 2, 3)\) có đúng 2 cặp nghịch thế là \((2, 3)\) vì \(P_2 > P_3\) (tức \(4 > 2\)), và \((2, 4)\) vì \(P_2 > P_4\) (tức \(4 > 3\)).
Team SetNews cần tạo ra một danh sách chứa tất cả các hoán vị đẹp có thể có, sau đó sắp xếp danh sách này theo thứ tự từ điển tăng dần. Để kiểm tra tính đúng đắn của hệ thống, cô Mẫn cần trích xuất ra hoán vị nằm ở vị trí thứ \(k\) trong danh sách.
Yêu cầu: Cho ba số nguyên \(n, m, k\). Hãy tìm hoán vị đứng thứ \(k\) trong danh sách các hoán vị đẹp đã được sắp xếp. Do \(n\) có thể rất lớn, bạn không cần in ra toàn bộ hoán vị mà chỉ cần in ra số lượng và chi tiết các vị trí bị xáo trộn (tức là các vị trí \(i\) mà \(P_i \neq i\)). Nếu số lượng hoán vị đẹp thỏa mãn ít hơn \(k\), hãy in ra -1.
-1.Test 1
4 2 2
3
2 4
3 2
4 3
Với \(n=4\), các hoán vị có đúng \(m=2\) nghịch thế được xếp theo thứ tự từ điển gồm:
Hoán vị thứ \(k=2\) là \((1, 4, 2, 3)\). So với hoán vị gốc \((1, 2, 3, 4)\), có 3 vị trí bị thay đổi là vị trí số 2, 3 và 4.
Để tăng cường tương tác của độc giả trên ứng dụng SetNews, cô Mẫn và team phát triển vừa ra mắt một minigame sưu tầm mang tên "Thẻ bài Tin tức". Trong sự kiện đặc biệt mùa đông này, mỗi người chơi sẽ thu thập các thẻ bài, mỗi thẻ được mô tả sức mạnh bởi \(6\) chỉ số nguyên dương \((a_1, a_2, a_3, a_4, a_5, a_6)\) lần lượt đại diện cho: Độ Hot, Độ Tin Cậy, Lượt Tương Tác, Tốc Độ Load, Tính Thẩm Mỹ và Độ Độc Quyền.
Tuy nhiên, thuật toán chiến đấu của game rất khó lường: Ở mỗi vòng đấu, hệ thống không sử dụng toàn bộ 6 chỉ số mà sẽ chọn ngẫu nhiên một tập con không rỗng \(S \subseteq \{1, 2, 3, 4, 5, 6\}\) để chấm điểm.
Với một thẻ \(X\) và một tập \(S\), điểm số của thẻ \(X\) theo tập \(S\) được tính bằng tổng các chỉ số \(X_i\) với mọi \(i \in S\).
(Ví dụ: Nếu hệ thống chọn \(S = \{2, 5\}\), thì điểm của thẻ \(X\) sẽ là \(score_S(X) = X_2 + X_5\).)
Trong quá trình test game, team SetNews phát hiện ra một vấn đề mất cân bằng nghiêm trọng. Hệ thống định nghĩa rằng thẻ \(X\) "áp đảo" (bất bại) trước thẻ \(Y\) nếu thỏa mãn cả hai điều kiện sau:
Một bộ thẻ của người dùng được coi là "cân bằng" nếu trong bộ thẻ đó không tồn tại bất kỳ hai thẻ nào mà một thẻ áp đảo thẻ còn lại.
Yêu cầu: Cho danh sách \(n\) thẻ bài mà một người chơi đang sở hữu. Hãy giúp cô Mẫn tính toán xem người chơi này cần loại bỏ ít nhất bao nhiêu thẻ bài để tập hợp các thẻ còn lại tạo thành một bộ thẻ "cân bằng".
(Lưu ý: Bạn chỉ cần in ra số lượng thẻ phải loại bỏ, không cần in danh sách các thẻ cụ thể).
Test 1
4
2 1 1 1 1 1
1 2 1 1 1 1
1 1 1 1 1 1
3 3 3 3 3 3
2
Gọi 4 thẻ lần lượt là \(X_1, X_2, X_3, X_4\).
Để bộ thẻ cân bằng, ta có thể giữ lại bộ \(\{X_1, X_2\}\). Tổng số thẻ nhiều nhất có thể giữ lại là 2. Vậy số thẻ ít nhất cần loại bỏ là \(4 - 2 = 2\) thẻ (loại bỏ thẻ \(X_3\) và \(X_4\)).
Test 2
2
5 5 5 5 5 5
5 5 5 5 5 5
0
Hai thẻ có tất cả các chỉ số bằng nhau. Theo định nghĩa, không có tập \(S\) nào để \(score_S(X) > score_S(Y)\) xảy ra. Do đó không thẻ nào "áp đảo" thẻ kia. Bộ thẻ đã cân bằng, không cần loại bỏ thẻ nào.