【题解】ABC 210
E.
题意:求最小生成树。
Solution:
数论+生成树。
我们将尝试快速模拟 Kruskal
算法的过程。
发现在第 i
个状态,假设操作前有 A
个联通块,操作后 B
个块,那么代价等于 (A-B) * c[i]
。
考虑 w
和 v
联通等价于:w=v+k1a1+k2a2+ ... +k_{n-1}a_{n-1},k_i \in Z
。这里根据裴蜀定理得到 w mod d = v mod d
,其中 d=gcd(a1,a2, ... an)
。
时间复杂度 O(nlogn)
。
F.
这是一道 2-sat
的题目。
不妨用 vector<int> s[x]
表示有第 x
个质因子的位置 i
的集合。
然而暴力跑 2-sat
时间复杂度 O(n^2)
。(考虑每一个质因子 x
,将 s[x]
元素两两连边) 。
现在我们考虑减少语句数量。首先,我们加入 X_{p,1} , X_{p,2} , ... X_{p,pk}
,然后从 x
向 X_{p,i}=x
连边。这样便于在同一个质数集合内转移。
我们意识到没有必要两两连边,定义 Y_{p,1}
表示前面全为 0
,同样与 Y_{p,i}=x
建立映射关系。这样的话变的总条数约为 7*\sum{siz_s[x]}
。
如此时间复杂度 \sum{siz_s[x]}=O(nlogL)
。可以用 tarjan缩点
算法解决。
代码比较冗杂。题解运用了重新编号思想,值得学习。(本人写不出来。。。)
__EOF__

本文作者:仰望星空的蚂蚁
本文链接:https://www.cnblogs.com/cqbzly/p/17530325.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/cqbzly/p/17530325.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」