题意解析:给定长度分别为 n,mn,mn,m 的两组点对 [(Ai,Bi)],[(Ci,Di)][(A_i,B_i)],[(C_i,D_i)][(Ai ,Bi )],[(Ci ,Di )]。你可以重排 [(Ai,Bi)][(A_i,B_i)][(Ai ,Bi )]。请你判断是否存在一种方式,使得对于所有 1≤i≤n1\le i\le n1≤i≤n,Ai≤CiA_i\le C_iAi ≤Ci 且 Bi≤DiB_i\le D_iBi ≤Di 。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
首先按 AiA_iAi 从大到小排序。这样对于 i≤ji\le ji≤j,Ai≥AjA_i\ge A_jAi ≥Aj 。然后分类讨论。
* 如果 Bi≥BjB_i\ge B_jBi ≥Bj :显然 iii 怎么选都不影响后面的。
* 如果 Bi<BjB_i\lt B_jBi <Bj :我们可以画图,发现 iii 选最下方的点是不劣的。
所以我们可以按如下方式选取:
找到 Di≥BiD_i\ge B_iDi ≥Bi 且 Ci≥AiC_i\ge A_iCi ≥Ai 且 DiD_iDi 最小的点。
现在的问题就转化成如何找到这个点。
我们可以先离散化一下 DiD_iDi ,然后开 mmm 个集合,将 DiD_iDi 相同的点都放到同一个集合里。
然后问题就是找到最小的 DiD_iDi ,使得 Di≥BiD_i\ge B_iDi ≥Bi 且它对应的集合内存在一个 Ci≥AiC_i\ge A_iCi ≥Ai ,找到删除这个集合的元素即可。
显然可以线段树二分。
时间复杂度:O(Tmlogm)O(Tm\log m)O(Tmlogm)。