摘要: 把集合A[i]看作i点的前驱点集合,建成一个DAG,并新建超级源S,向每个前驱集合为空的点连边,那么B[i]就是S到i的必经点集合。首先使用Lengauer-Tarjan算法建立出以S为起点的Dominator Tree,那么B[i]就是i在树上的所有祖先。对于一个询问,构造出虚树,然后统计虚树上每... 阅读全文
posted @ 2015-10-07 02:42 Claris 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 离散化后通过树状数组求出:b[i]为i之前比它小的。c[i]为i之前比它大的=i-1-i之前小于等于它的。d[i]为i之后比它小的。e[i]为i之后比它大的=n-i-f[i]。f[i]为i之后小于等于它的。则:$cnt_{123}=\sum_{i=1}^n b[i]e[i]$$cnt_{321}=\... 阅读全文
posted @ 2015-10-07 02:08 Claris 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 一维的情况:排序后维护一个单调指针即可,时间复杂度$O(n\log n)$。二维的情况:旋转坐标系后转化为二维数点问题,扫描线+树状数组维护即可,时间复杂度$O(n\log n)$。三维的情况:将后两维旋转坐标系,对于每个x,预处理出横坐标为x的点的后两维的二维前缀和。枚举一个点,再枚举另一个点的x... 阅读全文
posted @ 2015-10-07 00:45 Claris 阅读(647) 评论(0) 推荐(0) 编辑