Bộ thẻ cân bằng (Ôn tập OLP MT&TN lần 7)

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: 1800 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Để 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:

  1. Với mọi tập con không rỗng \(S\), luôn có \(score_S(X) \ge score_S(Y)\).
  2. Tồn tại ít nhất một tập con không rỗng \(S\) sao cho \(score_S(X) > score_S(Y)\).

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ể).

Input

  • Dòng đầu tiên chứa số nguyên \(n\) (\(2 \le n \le 500\)) là số lượng thẻ bài.
  • \(n\) dòng tiếp theo, mỗi dòng gồm \(6\) số nguyên dương \(a_1, a_2, a_3, a_4, a_5, a_6\) (\(1 \le a_i \le 20\)) cách nhau bởi khoảng trắng, mô tả 6 chỉ số của một thẻ bài.

Output

  • In ra một số nguyên duy nhất: Số thẻ ít nhất cần loại bỏ để bộ thẻ còn lại đạt trạng thái cân bằng.

Example

Test 1

Input
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
Output
2
Note

Gọi 4 thẻ lần lượt là \(X_1, X_2, X_3, X_4\).

  • Thẻ \(X_4\) có các chỉ số cao nhất, nên nó "áp đảo" cả 3 thẻ còn lại.
  • Thẻ \(X_1\)\(X_2\) đều "áp đảo" thẻ \(X_3\).
  • Xét \(X_1\)\(X_2\): Nếu hệ thống chọn \(S=\{1\}\), điểm \(X_1 > X_2\). Nếu hệ thống chọn \(S=\{2\}\), điểm \(X_2 > X_1\). Vậy không thẻ nào áp đảo thẻ nào.

Để 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\)\(X_4\)).

Test 2

Input
2
5 5 5 5 5 5
5 5 5 5 5 5
Output
0
Note

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.

Scoring

  • Subtask 1 (\(25\%\) số điểm): \(n \le 22\).
  • Subtask 2 (\(18\%\) số điểm): \(n \le 500\); với mọi thẻ ta luôn có \(a_3=a_4=a_5=a_6=1\), đồng thời các giá trị \(a_1\) đôi một khác nhau.
  • Subtask 3 (\(18\%\) số điểm): \(n \le 500\); với mọi thẻ ta luôn có \(a_i \in \{1, 2, 3\}\) (\(1 \le i \le 6\)).
  • Subtask 4 (\(39\%\) số điểm): Ràng buộc gốc \(n \le 500\)\(1 \le a_i \le 20\).

Bình luận

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

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