题目大意
有 nnn 家公司和 mmm 为求职者,每家公司有两个能力要求,每位求职者也有两个能力值,求职者只有都满足这两个要求才可以通过面试,求每位求职者可以通过多少家公司的面试。
题目思路
我们可以把两个能力值看成一个二维的坐标,那么对于某家公司的要求 (a,b)(a,b)(a,b) ,能力值为 (x,y)(x,y)(x,y) 的求职者只有同时满足 x≥ax\geq ax≥a 且 y≥by\geq by≥b 才可以通过面试,即 (x,y)(x,y)(x,y) 在左上角为 (a,b)(a,b)(a,b) 到右下角为 (1000,1000)(1000,1000)(1000,1000) 的范围内即可满足条件。
所以我们不妨用二维差分+前缀和的思想来求出每位求职者可以通过面试的公司数量,对每家公司的要求 (a,b)(a,b)(a,b) 点上的差分数组加一,最后求出前缀和,O(1)O(1)O(1) 查询每位求职者的可通过面试数量。
时间复杂度 O(106)O(10^6)O(106)
参考代码