给定空间中的n个点,问每个点有多少个点小于等于自己. 先来分析简单的二维的情况,那么只要将x坐标排序,那么这样的问题就可以划分为两个子问题,,这样的分治有一个特点,即前一个子问题的解决是独立的,而后一个子问题的解决依赖于前一个子问题,即用前一个子问题来解决后一个子问题,而不是合并. 这就是cdq分治. 具体的代码如下. void cdq(int l, int r){ if(l==r) return; ; cdq(l,m); cdq(m+,r); //按y进行排序,那么问题就变成两个y递增的集合,…