[link](https://loj.ac/p/4092)
考虑单次询问怎么做。
不难发现这是一个二分图匹配,左部点 $i$ 可以匹配到右部点 $j$ 当且仅当 $A_i\ge B_j\and i\neq j$。
不妨设 $B$ 递增,这当然可以通过排序实现。
什么时候不存在完美匹配呢?就是存在左部点 $i$,$i$ 只能匹配到右部点 $[1,i-1]$(也就是说 $A_i<B_{i+1}$,根据定义它不能匹配到自己),而且左部点 $1,2,\dots,i-1$ 也只能匹配到 $[1,i-1]$。这是充要条件,证明留作习题。(使用 Hall 定理)
暴力实现 $O(Qn\log n)$,这样我们可以拿到一半的分数。
接下来是一些(麻烦的)数据结构技巧。
仔细研究上述限制条件。如果我们把 $[B_i,A_i]$ 看成区间,那么 $i$ 不合法当且仅当 $[B_i,A_i]$ 和任意 $[B_j,A_j](j\in[L,R])$ 都没有交。(它被孤立了)
可以算出 $f_i$ 代表最大的 $j<i$ 满足 $[B_j,A_j]\cap[B_i,A_i]\neq\varnothing$,$g_i$ 代表最小的 $j>i$ 满足 $[B_j,A_j]\cap[B_i,A_i]\neq\varnothing$。
这个用一个区间覆盖区间查的线段树就能算出来。
那么问询 $L,R$ 不合法当且仅当存在 $i\in [L,R]$ 满足 $[f_i+1,g_i-1]\supset [L,R]$,这个等价于 $L\in [f_i+1,i]\and R\in[i,g_i-1]$。
这是矩形加单点查,扫描线 + BIT 即可。
这样就做完了,时间复杂度一只 $\log$。
[code](https://loj.ac/s/2001638)
标签:匹配,右部点,当且,2024,JOI,Final,neq From: https://www.cnblogs.com/LemonTY/p/18012252