一道组合题
http://qoj.ac/contest/823/problem/2599
题意
给定平面上的 \(n\) 个蓝点 \(A_1,\cdots,A_n\) 和 \(n\) 个黄点 \(B_1,\cdots,B_n\)。
你需要在平面上任选 \(1\) 个红点 \(C\) 并找到一组蓝点到黄点的完美匹配,使得 \(\angle ACB\ge\frac{\pi}{2}\)。当存在重复点时钦定角为 \(\pi\)。
数据范围:\(n\le 2\times 10^5\)
分析
考虑垂直的直线 \(l_1,l_2\),每条直线两边各有 \(n\) 个点。设第 \(i\) 象限的蓝点数为 \(a_i\),黄点数为 \(b_i\)。
有一些等式:
假设 \(u=0\),那么一三、二四象限分别匹配有解。
设 \(l_1\) 为 \(x\) 轴逆时针转 \(\alpha\in[0,\frac{\pi}{2})\)。确定了 \(\alpha\),\(l_1,l_2\) 也就确定了。我们证明一定存在某个 \(\alpha\) 使得 \(u=0\)。
考虑 \(\alpha_0=0,\alpha_1=\frac{\pi}{2}\)。如果 \(u_0=0\) 肯定有解。否则,由于 \(u_1=v_0=-u_0\),两者异号。由于 \(u\) 随着 \(\alpha\) 增大只会 \(\pm 1\),总有一个时刻为 \(0\)。
归纳:\(u_lu_r<0\) 时 \(\alpha\in [l,r]\) 一定有解。取 \(m=\frac{l+r}{2}\),那么要么 \(u_m\) 与 \(u_l\) 异号,要么 \(u_m\) 与 \(u_r\) 异号。
算 \(u_\alpha\) 要排序,总复杂度 \(O(n\log n\log V)\)。