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

浙公网安备 33010602011771号