У меня есть массив, содержащий 100 000 наборов. Каждый набор содержит натуральные числа ниже 1,000,000. Я должен найти количество упорядоченных пар {m, n}, где 0 < m < 1 000 000, 0 < n < 1,000,000 и m!= N, которые не существуют вместе ни в одном из 100 000 наборов. Наивный метод поиска по всем множествам приводит к 10 ^ 5 * (10 ^ 6 выбирает 2) числу поисков.
Например, у меня есть 2 набора set1 = {1,2,4} set2 = {1,3}. Все возможные упорядоченные пары чисел ниже 5 являются {1,2}, {1,3}, {1,4}, {2,3}, {2,4} и {3,4}. Упорядоченные пары чисел ниже 5, которые не существуют вместе в множестве 1, являются {1,3}, {2,3} и {3,4}. Упорядоченные пары ниже 5, отсутствующие в наборе 2, являются {1,2}, {1,4}, {2,3}, {2,4} и {3,4}. Упорядоченные пары, которые не существуют вместе в обоих множествах, являются {2,3} и {3,4}. Таким образом, количество числа упорядоченных пар отсутствует.
Может ли кто-нибудь указать мне на умный способ организации моей структуры данных, чтобы найти количество пропавших пар быстрее? Я заранее извиняюсь, если этот вопрос был задан раньше.
Обновление: Вот некоторая информация о структуре моего набора данных. Количество элементов в каждом наборе варьируется от 2 до 500 000. Среднее число элементов составляет около 10 000 человек. Распределение достигает 10 000 и сужается в обоих направлениях. Объединение элементов в 100 000 наборов близко к 1 000 000.