一道组合题

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\)

有一些等式:

\[\begin{aligned} a_1-b_3&=a_3-b_1=u \\ a_2-b_4&=a_4-b_2=v \\ \end{aligned} \\ \begin{aligned} \because \sum a_i &=\sum {b_i}+2u+2v = \sum b_i \\ \therefore u&=-v \end{aligned} \]

假设 \(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)\)

posted @ 2022-09-23 11:27  alfalfa_w  阅读(78)  评论(0编辑  收藏  举报