
整数域二分描述对于给定的长度为nn 的数组 你需要实现:区间元素个数查询输出数组中大于等于 l且小于等于r 的元素个数你一共需要处理q 次操作。输入描述第一行输入两个整数 n,q(1≦n,q≦2×10^5 ) 代表数组中的元素数量、操作次数。第二行输入 n 个整数代表初始数组。此后 q 行每行输入两个整数 代表区间的边界。输出描述对于每一次查询操作在一行上输出一个整数代表区间中的元素个数。示例1输入7 3-7 -1 3 6 2 -4 90 3-1 4-10 10复制输出237实现代码Python:importsysimportbisectdefmain():linessys.stdin.read().splitlines()idx0n,qmap(int,lines[idx].split())idx1#print(n,q)numslist(map(int,lines[idx].split()))idx1#print(nums)nums.sort()#print(nums)for_inrange(q):l,rmap(int,lines[idx].split())idx1#print(l,r)l_seqbisect.bisect_left(nums,l)r_seqbisect.bisect_right(nums,r)countr_seq-l_seqprint(count)if__name____main__:main()分析本题使用库函数bisect可快速解决以下是整理后的Markdown表格格式内容函数与使用场景对照表函数作用返回值机试使用场景bisect.bisect_left(a, x)找第一个 ≥ x 的元素的下标左边界整数下标查区间[l, r]的左边界≥lbisect.bisect_right(a, x)找第一个 x 的元素的下标右边界整数下标查区间[l, r]的右边界rbisect.bisect(a, x)等价于bisect_right(a, x)整数下标简化写法和bisect_right通用bisect.insort_left(a, x)将 x 插入数组 a 并保持升序无直接修改数组需要插入元素并保持有序时使用排序 二分查找是处理「区间元素计数」的最优解