第 132 场周赛——质数小结论,并查集配Floyd
https://www.acwing.com/activity/content/competition/problem_list/3648/
B题收获:
1.利用题目告诉的结论:1e9范围质数之差小于300
2.一个数不被2-a的任何数整除 等价于他的最小质因子需要大于a
c题:初步宏观思路:不难想到用并查集维护类别,只需将每一个类缩成一个点,由于最多只有500个类别,跑一个floyd就可以了
部分细节处理:我的思路是类别用并查集维护,开了一个哈希表去存每个类别对应的根节点是最终floyd的第几个点,in fact,这样做复杂了。一会说正解,然后我在读入边的时候去判断,如果两个不是同一类,我们需要建图存边。
如果是同一类,我们只要0边,因为题目要求内部距离为0。在check的时候,本质上是看看联通性,因为我们又弄了一个并查集去看联通性,但是只合并了内部0的边,最后看看每个类别的size是不是和原先dsu=相同。
就这样交了一发,然后wa了,发现内部的两个点可以通过外部实现联通(分组:1和2,3。。。1与3联通,2与3联通,那么1和2联通,上面的做法被hack。
所以我们必须考虑合并所有为0的边,最后check的时候是对所有点看看相邻的点,如果是同一类却在维护联通性并查集中不同root,直接retur no。
正解:我们只需要用一个id数组存下每个点对应的类别,在维护连通性的时候使用并查集,最后check的时候我们只需要保证两个同类别的点属于同一个根至于这个根是不是原来这个类在这个问题中我们并不关心,因为我们只关心连通性。
__EOF__

本文作者:爱飞鱼
本文链接:https://www.cnblogs.com/mathiter/p/17873749.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/mathiter/p/17873749.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话