Baltic Olympiad in Informatics 2020, Day 2

链接

究极下饭.jpg

A. Graph

考虑对每个连通块分别处理。

如果一个连通块是一棵树,直接设根节点是 X,然后可以用 X 表示所有节点。最后要求是 f(X)=|Xai| 直接对 ai 排序求中位数即可。

如果连通块是一个二分图,事实上如果所有偶环合法,那么等价于一棵树,否则无解,所以最后再判一波是否合法即可。

对于存在奇环的图,可以发现一个奇环就可以唯一确定这个图的所有变量,随便处理即可。

复杂度 O(nlogn)

提交记录

B. Village

这个构造总的来说还是比较水的。

首先是 Minimum 的部分。容易证明答案下界是 2(n)

而且下界很容易达到:考虑贪心匹配一个点和一个未匹配的子节点,剩下子节点的连成一个环。最后根如果没有匹配强行插入任意一个子节点的环中。

然后是 Maximum 的部分。同样容易证明答案下界是以重心为根的子节点深度之和 ×2。同样可以证明这也是答案上界:

  • 首先如果以除了重心以外的子节点为根,必然有若干匹配路径不经过根。那么将根想重心移到,这些不经过根的匹配路径不变,其余深度变大。
  • 如果存在路径不经过根,那么一定存在另一条路径也不经过根,交换终点总长度变大。

所以直接以重心为根,剩下随便构造一下即可。如果节点数为奇数,最后重心需要插入到任意一对匹配中。

提交记录(Minimum)

提交记录(Maximum)

C. Viruses

可以发现的是 01 是没有突变可能的,所以如果一个串变化过程中出现 0,1,那么这些 0,1 就是固定的了。

如果没有抗体时怎么做:考虑用 fi 表示 i 最小能变成多短的串,转移考虑用类似于 SPFA 的方式转移。

对于有抗体的情况:考虑建出所有抗体的 AC 自动机,那么 0,1 串的任意子串都不能是该串的子串。

考虑更改 dp 式子。设 fi,l,r 表示字符 i,之前在 AC 自动机上的状态是 l,要变成 r 且不能经过终止节点的最短距离。

对于每一个转移边,本质上是将上述 dp 转化成 min 矩阵形式,即

ibfi

但是注意到这个 dp 可能会成环,不过我们要的是最短距离,所以不断增广,总转移数应该是 SPFA 的复杂度即 O(nm),算一下是 O(n6)。但众所周知 SPFA 复杂度特殊图根本卡不满,卡一卡常可以通过。

提交记录

posted @   Flying2018  阅读(51)  评论(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编程运行原理
点击右上角即可分享
微信分享提示