对于每个用户的购物记录:
某电商平台希望分析用户的购物数据,找出经常在同一位用户购物记录中共同出现的商品对。商品对由两个不同的商品 ID 组成,且不区分先后顺序。当两个不同的商品 ID 在同一位用户的购物记录中都至少出现一次时,该商品对就在该用户处产生一次共现。
给定 N 位用户的购物记录和 Q 个查询阈值。对每一位用户,先去除购物记录中重复出现的商品 ID,然后枚举去重后商品之间的所有两两组合;每个商品对在同一位用户中只会累计一次,重复购买同一商品不会额外累加。
统计完所有用户后,对每个查询阈值 T,请计算共现次数不少于 T 的商品对数量。
约束条件:
第一行包含两个整数 N 和 Q,分别表示用户数量和查询数量。
接下来 N 行,每行描述一位用户的购物记录:行首是一个整数 k,表示该用户购买的商品个数,随后紧跟 k 个整数,表示该用户购买的商品 ID。
之后 Q 行,每行包含一个整数 T,表示一次查询的共现频率阈值。
共 Q 行,每行一个整数,表示共现次数不少于对应查询阈值 T 的商品对数量。
输入
1 1
1 1
1
输出
0
说明
唯一用户只购买了商品 1,去重后商品集合大小为 1。
由于商品对需要两个不同商品,无法组成任何商品对,因此商品对共现次数统计为空。
查询阈值 T=1 时,共现次数不少于 1 的商品对数量为 0。
输入
4 3
3 1 2 3
2 1 2
2 2 3
1 4
1
2
3
输出
3
2
0
说明
用户 1 的购物记录包含 3 个商品,ID 为 1、2、3,去重后得到 {1,2,3},产生商品对 (1,2)、(1,3)、(2,3)。
用户 2 的购物记录包含 2 个商品,ID 为 1、2,去重后得到 {1,2},产生商品对 (1,2)。
用户 3 的购物记录包含 2 个商品,ID 为 2、3,去重后得到 {2,3},产生商品对 (2,3)。
用户 4 的购物记录包含 1 个商品,ID 为 4,去重后只有商品 4,不产生商品对。
统计共现次数:(1,2) 出现 2 次,(1,3) 出现 1 次,(2,3) 出现 2 次。
查询阈值 T=1 时,三个商品对均满足,数量为 3。
查询阈值 T=2 时,(1,2) 和 (2,3) 满足,数量为 2。
查询阈值 T=3 时,没有商品对达到 3 次,数量为 0。
输入
3 3
4 10 20 30 40
3 10 20 50
2 20 30
1
2
3
输出
8
2
0
说明
用户 1 的购物记录包含 4 个商品,ID 为 10、20、30、40,去重后得到 {10,20,30,40},共产生 6 个商品对。
用户 2 的购物记录包含 3 个商品,ID 为 10、20、50,去重后得到 {10,20,50},共产生 3 个商品对。
用户 3 的购物记录包含 2 个商品,ID 为 20、30,去重后得到 {20,30},共产生 1 个商品对。
汇总后,商品对 (10,20) 和 (20,30) 各出现 2 次,其余商品对各出现 1 次,总商品对数为 8。
查询阈值 T=1 时,所有 8 个商品对都满足,数量为 8。
查询阈值 T=2 时,只有 (10,20) 和 (20,30) 满足,数量为 2。
查询阈值 T=3 时,没有商品对达到 3 次,数量为 0。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册