San*_*eep 14 c++ algorithm set data-structures
我有一个包含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}.在集合1中不存在的低于5的有序数字对是{1,3},{2,3}和{3,4}.第2组中低于5的有序对是{1,2},{1,4},{2,3},{2,4}和{3,4}.在两个集合中不存在的有序对是{2,3}和{3,4}.因此,缺失的有序对的数量是2.
任何人都能指出我一种聪明的方式来组织我的数据结构,以便找到丢失的对的数量更快?如果之前已经提出这个问题,我会提前道歉.
更新:以下是有关数据集结构的一些信息.每组中的元素数量从2到500,000不等.元素的中位数约为10,000.分布在10,000左右达到峰值并向两个方向逐渐减小.100,000套元素的联合接近1,000,000.
| 归档时间: |
|
| 查看次数: |
470 次 |
| 最近记录: |