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 赛后搓出来的,根本不会做。
题解给了一个难以描述的牛逼构造。