2020-2021 Winter Petrozavodsk Camp, UPC contest

链接

A B C D E F G H I J K L
+ + + + +1 +2 +4 + + +3

I. Interesting Scoring Systems

J. Joyful Numbers

K. Königsberg Bridges

签到题。

C. Cartesian MST

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

直接按类似 Kruskal 的做法做即可。复杂度 O(mlogm)

L. Long Grid Covering

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

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

复杂度 O(M3logn),其中 M 是自动机大小。

E. Even intervals

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

直接权值线段树即可。复杂度 O(nmlogn)

A. Adjacent Rooks

首先非常暴力地用 fi,j,k,l 表示当前放了 ii 位置在 ji1 位置在 k,有 l 个相邻差为 1

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

所以改成用 fi,j,0/1/2 表示有 j 个相邻差为 1ij 不相邻/左边/右边。

i+1 的位置分类讨论即可。复杂度 O(n2+T)

F. Friendship Circles

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

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

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

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

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

D. Display of Springs

李超线段树板子题。

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

B. Beautiful Permutation

人类智慧题。

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

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

posted @   Flying2018  阅读(382)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示