首先先将p从小到大排一下序,此时我们可以求出对于每一个i它的极大三元组,就是对于每一 个i,求一个最大的j,使得pj<pi*2那么统计i到j中的0,1,2的个数,记它为极大三元组,我们记n这n个极大三元组为a,b,c。
如果将a,b,c放入立体三维空间中,那么问题就转换为了求这些立方体(0,0,0到a,b,c)的体积并,只 要在立方体里面的点就一定满足条件,这显然是比较难求的,但是如果我们把它转换为二维,问题就简单了很多。
首先我们将它们以a从小到大排序,然后依次在平面内加入点(b,c),我们可以发现,对于任意a’>a满足a’的所有b,c一定在a下一定成立,所以每次在统计a的时候,要加上之前>a的面积并。并且我 们发现,每一时刻面积并的形状都是阶梯状的,也就是说,b越大c越小,所以可以每次加进来一个 点,只需要判断它是否在图形外,在图形外,则要更新面积以及在边缘的点,用set就行了。