我们要统计所有配对 (i,j) 中满足 xi×yj≥K 的个数。两个数列均为非负整数,我们可以利用排序和二分查找高效计算。
need = (K + x_i - 1) // x_i(向上取整)。在排序后的 y 中用二分查找找到第一个 >= need 的位置 pos,则后缀 y[pos…m−1] 全部合格,贡献 m−pos。工程师小刘需要评估两个独立传感器采集的数据。传感器 X 记录了 n 个读数 x1,x2,…,xn,传感器 Y 记录了 m 个读数 y1,y2,…,ym。对于任意来自 X 的读数 xi 和来自 Y 的读数 yj,定义复合指标为其乘积 xi×yj。给定一个预设的质量阈值 K,若 xi×yj≥K,则称该配对 (i,j) 合格。你的任务是统计所有 n×m 个配对中合格配对的总数。
由于可能涉及大量传感器数据和多组测试,你需要高效地计算出结果。
约束条件:
1 ≤ T ≤ 10^5n, m ≥ 1,且所有测试中 n+m 的总和 ≤ 2 × 10^50 ≤ K ≤ 10^180 ≤ x_i, y_j ≤ 10^9,均为整数。第一行包含一个整数 T (1 ≤ T ≤ 10^5),表示测试用例的个数。接下来每组测试用例的数据按以下格式给出:
n、m 和 K(n, m ≥ 1;0 ≤ K ≤ 10^18;所有测试中 n+m 之和 ≤ 2 × 10^5)。n 个整数 x1,x2,…,xn,每个 xi 满足 0 ≤ x_i ≤ 10^9。m 个整数 y1,y2,…,ym,每个 yj 满足 0 ≤ y_j ≤ 10^9。对于每组测试用例,输出一行一个整数,表示满足 xi×yj≥K 的配对数量。
输入
1
2 2 5
2 3
1 4
输出
2
说明
对于传感器 X 的读数 2,需要 Y 的读数满足 yj≥⌈5/2⌉=3,Y 中仅有 4 满足,贡献 1 对;对于读数 3,需要 yj≥⌈5/3⌉=2,Y 中仅有 4 满足,贡献 1 对。
合计 2 对合格配对。
输入
1
2 3 0
0 5
2 7 0
输出
6
说明
当 K=0 时,任意两个非负整数的乘积都满足 ≥0。传感器 X 有 2 个读数,传感器 Y 有 3 个读数,共 2×3=6 个配对。
即使存在 0 值(例如 x1=0 或 y3=0),乘积为 0,依然满足 0≥0,因此全部 6 对均合格。
输入
1
3 3 7
0 3 8
0 2 4
输出
3
说明
对于 x1=0,由于 K=7>0,所有包含该读数的乘积恒为 0,不满足 ≥7,贡献 0。
对于 x2=3,需要 yj≥⌈7/3⌉=3,Y 中仅有 4 满足,贡献 1。
对于 x3=8,需要 yj≥⌈7/8⌉=1,Y 中有 2 和 4 满足,贡献 2。
总计 3 对合格配对。
输入
1
1 1 1000000000000000000
1000000000
1000000000
输出
1
说明
本样例测试极端阈值。传感器 X 的读数 x1=109,传感器 Y 的读数 y1=109,乘积为 x1×y1=1018。
给定阈值 K=1018,由于 1018≥1018 成立,该配对合格,总数为 1。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册