USACO 2018 - Dec - Gold - Cowpatibility

Xem dạng PDF

Gửi bài giải

Điểm: 0,90 (OI)
Giới hạn thời gian: 2.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Người đăng:
Nguồn bài:
http://www.usaco.org/index.php?page=viewproblem2&cpid=862
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Có một yếu tố quan trọng hơn cả để đánh giá 2 chú bò có phải bạn "tiềm năng" của nhau không, đó là vị kem yêu thích của chúng.

Nông dân John có ~N~ chú bò. Mỗi chú bò có đúng ~5~ vị kem yêu thích của riêng mình. Để thuận tiện, mỗi hương vị được thể hiện bởi một số nguyên dương tối đa là ~10^6~. Hai chú bò có thể kết bạn với nhau nếu có chung ít nhất một vị kem yêu thích.

Hãy đếm số cặp bò không kết bạn được với nhau.

Input

  • Dòng đầu là số nguyên dương ~N (1 \le N \le 50000)~ - số chú bò của nông dân John.

  • ~N~ dòng tiếp theo, dòng thứ ~i~ gồm ~5~ số nguyên dương tối đa là ~10^6~ - các hương vị yêu thích của chù bò thứ ~i~.

Output

  • Số cặp các chú bò không kết bạn được với nhau.

Sample Input

4
1 2 3 4 5
1 2 3 10 8
10 9 8 7 6
50 60 70 80 90

Sample Output

4

Giải thích

  • Các cặp bò không kết bạn được với nhau là ~ (1, 4) ~, ~ (2, 4) ~, ~ (3, 4) ~, ~ (1, 3) ~.

Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    SpiritedAway  đã bình luận lúc 22, Tháng 10, 2023, 18:07 sửa 7

    Spoiler thuật toán:

    Đếm những cặp bò kết bạn được với nhau: ~cnt~

    Xét đến vị trí ~i:~

    Đếm những vị trí ~j < i~ có chung ít nhất một vị kem yêu thích

    Bao hàm loại trừ

    Các mask sẽ được lưu dưới dạng vector<int>

    Để đếm dùng map<vector<int>, int>

    Các vector<int> cần được sắp xếp theo một thứ tự để tránh các tập vị kem giống nhau nhưng sắp xếp lộn xộn tạo thành các vector<int> khác nhau

    Như vậy đáp án là ~n * (n - 1) / 2 - cnt~

    Độ phức tạp:

    ~N * 2^5 * 5 * log~