Подсчитать количество наставников - PullRequest
0 голосов
/ 30 сентября 2019

Я принимал участие в Kick Start, и эта проблема меня смущает: https://codingcompetitions.withgoogle.com/kickstart/round/0000000000050edc/00000000001864bc

(научить меня раунду старта в Google F *)

Может кто-нибудь объяснить, почему используется разница в наборефункция дает неправильный ответ? Спасибо.

ntests=int(input())
for test in range(ntests):
    n,s=map(int, input().split(" "))
    d2={}
    count=0
    for emp in range(1,n+1):
        arr= list(map(int, input().split(" ")))
        numSkills=arr[0]
        d2[emp] = set(arr[1:])

    for emp1 in range(1,n):
        for emp2 in range(emp1+1,n+1):
            if len(d2[emp1].difference(d2[emp2]))>0:
                count+=1
            if len(d2[emp2].difference(d2[emp1])) > 0:
                count += 1
    print(count)

Вот проблема ниже

Проблема Здесь, в Google, мы любим преподавать друг другу новые навыки! В Google работают N сотрудников, пронумерованных от 1 до N. Всего имеется S различных навыков, пронумерованных от 1 до S. Каждый сотрудник знает до 5 различных навыков.

i-й сотрудник может наставникомj-й сотрудник, если существует навык, который i-й сотрудник знает, а j-й сотрудник не знает. Сколько есть упорядоченных пар (i, j), где i-й сотрудник может наставлять j-го сотрудника?

Входные данные В первой строке входных данных указано количество тестовых случаев, T. T тестовых случаевследовать. В первой строке каждого теста приведены два целых числа N и S, которые являются числом сотрудников и количеством навыков соответственно.

Следующие N строк описывают навыки, которые знает каждый сотрудник. I-я из этих строк начинается с целого числа Ci, которое является числом навыков, которое знает i-й сотрудник. Затем целые числа Ci следуют в той же строке. J-е из этих целых чисел - Aij, указывающее, что i-й сотрудник знает навык Aij.

Выходные данные Для каждого тестового примера выведите одну строку, содержащую Case #x: y, где x - номер тестового случая(начиная с 1), а y - это количество упорядоченных пар (i, j), где i-й сотрудник может наставлять j-го сотрудника.

Ограничения Ограничение по времени: 40 секунд на тестовый набор. Ограничение памяти: 1 ГБ. 1 ≤ T ≤ 100. 1 ≤ S ≤ 1000. 1 ≤ Ci ≤ 5 для всех i. 1 ≤ Aij ≤ S для всех i и j. Aij ≠ Aik для всех j ≠ k.

Тестовый набор 1 (видимый) 2 ≤ N ≤ 500.

Тестовый набор 2 (скрытый) 2 ≤ N ≤ 5 × 104.

Образец

Ввод

2

4 100

4 80 90 100 5

1 90

1 80

3 80 90 100

3 30

4 10 11 12 13

4 10 11 12 13

525 26 27 28 29

Выход

Дело № 1: 7

Дело № 2: 4

В примере № 1: (1, 2) является допустимой парой, поскольку сотрудник 1 знает навык 100 (также 5 и 80), а сотрудник 2 - нет. (1, 3) является допустимой парой, поскольку сотрудник 1 знает навык 100 (также 5 и 90), а сотрудник 3 - нет. (1, 4) является допустимой парой, поскольку сотрудник 1 знает навык 5, а сотрудник 4 - нет. (2, 3) является допустимой парой, поскольку сотрудник 2 знает навык 90, а сотрудник 3 - нет. (3, 2) является допустимой парой, поскольку сотрудник 3 знает навык 80, а сотрудник 2 - нет. (4, 2) является допустимой парой, поскольку сотрудник 4 знает навык 100 (также 80), а сотрудник 2 - нет. (4, 3) является допустимой парой, поскольку сотрудник 4 знает навык 100 (также 90), а сотрудник 3 - нет. Всего существует 7 допустимых пар, поэтому ответом будет 7.

В примере № 2: (1, 3) является допустимой парой, поскольку сотрудник 1 знает навык 10 (также 11, 12 и 13). ), а работника 3 нет. (2, 3) является допустимой парой, поскольку сотрудник 2 знает навык 10 (также 11, 12 и 13), а сотрудник 3 - нет. (3, 1) является допустимой парой, поскольку сотрудник 3 знает навык 28 (также 25, 26, 27 и 29), а сотрудник 1 - нет. (3, 2) является допустимой парой, поскольку сотрудник 3 знает навык 27 (также 25, 26, 28 и 29), а сотрудник 2 - нет. Всего существует 4 правильные пары, поэтому ответ 4.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...