【LOJ2880】稻草人
题目 题目链接: https://loj.ac/problem/2880 JOI 村有一片荒地,上面竖着 \(n\) 个稻草人。任意两个稻草人的横坐标都不相同,任意两个稻草人的纵坐标都不相同。村民们每年多次在稻草人们的周围举行祭典。 有一次,JOI 村的村长听到了稻草人们的启示,计划在荒地中开垦一片田地。和启示中的一样,田地需要满足以下条件: 田地的形状是边平行于坐标轴的长方形; 左下角和右上角各有一个稻草人; 田地的内部(不包括边界)没有稻草人。 给出每个稻草人的坐标,请你求出有多少个满足条件的田地。 思路 网上的题解都是用 \(cdq+\) 单调栈的优秀算法,但这个 \(\color{gray}{\texttt{菜鸡stoorz}}\) 实在太菜了,看不懂这些高大尚的算法。所以就写了一个 \(cdq+bit+\) 线段树的一种常数超级超级超级大的垃圾算法 \(qwq\) 。 然后再bzoj上T飞了,LOJ跑了倒数第一,33321 ms 首先我们发现这个题目所求其实很像三维偏序,所以考虑用 \(cdq\) 求解。 假设我们现在处理到的区间是 \([l,r]\) ,我们可以对每一个点求出一个贡献区间 \([l_i,r_i]\) ,比如说如果这个点 \(i\) 在左半边,那么列区间为 \([l_i,r_i]\) ,行区间为 \([x_i,mid]\) 的矩形内没有任何一个点。