专栏文章

Sol P12506

P12506题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mip5d7bf
此快照首次捕获于
2025/12/03 06:26
3 个月前
此快照最后确认于
2025/12/03 06:26
3 个月前
查看原文
n1000n\le 1000 直接并查集即可。令 ii 表示在点 ii 且此时树蛙颜色为绿色,i+ni+n 表示在点 ii 且此时的树蛙颜色为棕色,如果原平面上 ii 能跳到 jjiij+nj+n 合并,jji+ni+n 合并,显然只要最后 iii+ni+n 在一个集合中就是合法情况。
考虑 n105n\le 10^5。我们有以下两个结论:
  • 如果一个点 iii+ni+n 在一个集合中,则与 ii 连通的所有点 jj 都一定合法,即 jjj+nj+n 在一个集合中。
    • 证明很简单,令原平面上 jj 能通过 dd 步跳到 ii,如果 d0(mod2)d\equiv 0\pmod 2jii+nj+nj\to i\to i+n\to j+n 是一条可行的方案,否则 ji+nij+nj\to i+n\to i\to j+n 是一条可行方案。
  • 如果有一个集合 SS 满足 SS 中的点在原平面上能互相到达,且 S3|S|\ge 3,则 SS 中所有点均可行。
    • 证明:如果 iSi\in S,那么可以找到 j1,j2j_1,j_2 满足 j1S,j2S,j1j2,j1i,j2ij_1\in S,j_2\in S,j_1\ne j_2,j_1\ne i,j_2\ne i,此时在原平面 ij1j2ii\to j_1\to j_2\to i 即为一种可行的方案。因为 S3|S|\ge 3,所以一定能找到 j1,j2j_1,j_2
把平面分成若干个 B×BB\times B 的矩形,满足一个 B×BB\times B 矩形内的点均可以互相到达,对于一个矩形,令矩形内的这些点集合为 SS,那么如果 S3|S|\ge 3,就直接 iS\forall i\in Siii+ni+n 合并即可。
B=r2B=\dfrac{r}{2},令 Si,j={(xk,yk)iBxk<(i+1)B,jByk<(j+1)B}S_{i,j}=\{(x_k,y_k)\mid iB\le x_k<(i+1)B,jB\le y_k<(j+1)B\},此时一个 Si,jS_{i,j} 内部的任意两点距离 22r\le \dfrac{\sqrt 2}{2}r,同时还有一个性质,对于 Si,jS_{i,j},只有满足 ii2,jj2|i-i'|\le 2,|j-j'|\le 2Si,jS_{i',j'} 中的点有可能直接跳到 Si,jS_{i,j},即以 (i,j)(i,j) 为中心边长 55 的正方形。
证明:对于 Si,jS_{i,j},如果 xi>2|x-i'|>2yj>2|y-j'|>2Si,jS_{i,j} 中一点到 Si,jS_{i',j'} 中一点距离至少为 r+1r+1
枚举 Si,jS_{i,j},如果 Si,j3|S_{i,j}|\ge 3 直接判合法,否则直接暴力向其四周 2424Si,jS_{i',j'} 中所有点判断能否到达即可。
加上并查集的 logn\log n,这样做是 O(48nlogn)O(48n\log n) 的。
证明:对于一个点 (a,b)Si,j(a,b)\in S_{i,j},只有其周围 2424Si,jS_{i',j'} 中的点可能试图与其进行合并,由于 Si,j2|S_{i',j'}|\le 2(否则会直接判掉),因此每个点被其他点访问的总数不超过 4848
显然 Si,jS_{i,j} 的数量是 101810^{18} 级别的,但是非空的数量不超过 nn,于是把非空的 Si,jS_{i,j} 离散化之后 (i,j)(i,j) 和编号对应关系用 map 存起来,做完了。

评论

0 条评论,欢迎与作者交流。

正在加载评论...