2020-2021 Winter Petrozavodsk Camp, UPC contest

链接 题解

A B C D E F G H I J K L
$\color{green}{\texttt{+}}$ $\color{red}{\texttt{+}}$ $\color{green}{\texttt{+}}$ $\color{red}{\texttt{+}}$ $\color{green}{\texttt{+1}}$ $\color{gray}{\texttt{+2}}$ $\color{gray}{\texttt{+4}}$ $\color{gray}{\texttt{+}}$ $\color{green}{\texttt{+}}$ $\color{gray}{\texttt{+3}}$

I. Interesting Scoring Systems

J. Joyful Numbers

K. Königsberg Bridges

签到题。

C. Cartesian MST

考虑如果按照正常的 MST 做法,一个维度上一条边会在另一维度的每张图中都加一遍。容易发现加入答案的次数就是另一维度此时的连通块数。并且这次操作之后当前维度会恰好少一个连通块。

直接按类似 Kruskal 的做法做即可。复杂度 $O(m\log m)$。

L. Long Grid Covering

考虑大力压后两行建自动机,总共 $64$ 种状态,把不合法状态去掉大约只有 $40$ 种,直接转移即可。

题解给了一种人类智慧建自动机的做法。

复杂度 $O(M^3\log n)$,其中 $M$ 是自动机大小。

E. Even intervals

看到 $n$ 只有 $5\times 10^4$ 还能离线,直接莫队。这样只需要支持往集合里加入/删除与求所有偶数位置之和。

直接权值线段树即可。复杂度 $O(n\sqrt m\log n)$。

A. Adjacent Rooks

首先非常暴力地用 $f_{i,j,k,l}$ 表示当前放了 $i$,$i$ 位置在 $j$,$i-1$ 位置在 $k$,有 $l$ 个相邻差为 $1$。

然后发现的一点是 $i,i-1$ 的位置并不重要,只要知道是否相邻即可。

所以改成用 $f_{i,j,0/1/2}$ 表示有 $j$ 个相邻差为 $1$,$i$ 在 $j$ 不相邻/左边/右边。

按 $i+1$ 的位置分类讨论即可。复杂度 $O(n^2+T)$。

F. Friendship Circles

直接暴力半平面交。如果一个点在答案中,那么其到原点中垂线向原点组成的半平面在最后的半平面交中。

考虑这里用斜率排序的做法有点恶心,可以反演之后求凸包。容易证明反演后凸包上的点一定对应是半平面交上的直线。

题解给了一个非常牛逼的转化:

容易发现最后圆经过原点一定比不经过优。那么考虑将这个圆反演,得到的是不包含原点的半平面。
根据圆反演的性质,圆内的点在半平面内。要求存在半平面只经过原点和某个特殊点 $p$,那么 $p$ 反演后的点一定在凸包上。
直接对所有点圆反演后求凸包即可。复杂度 $O(n\log n)$。

可以发现题解和半平面交的做法本质上是相同的。

D. Display of Springs

李超线段树板子题。

直接用李超线段树维护直线之间的关系即可。单次询问 $O(\log W)$。

B. Beautiful Permutation

人类智慧题。

Clovers 赛后搓出来的,根本不会做。

题解给了一个难以描述的牛逼构造。