D. Colored Portals

原题链接

题意

对于有相同颜色传送门的城市 i,j,可以花 |ij| 的代价从 ijji

问从城市 xy 的最小代价,或者报告无法到达

分析

对于无法到达的情况,很简单,用并查集维护即可

而对于可以到达的情况,我们发现,两座城市如果可以互相直接抵达,cost 是确定的

所以我们对与可以直接互相到达的城市,建立双向边,权值为 |ij|

然后查询最小代价就变成了查询两个点的最短路

预估时间复杂度 O(????)

困难点在于,建边需要平方的复杂度,查询两点最短路也很复杂

能不能优化?

我们可以在建边上使技巧

由于只有相同颜色的传送门才会建边,且边权值为城市编号的差

所以我们可以把具有每种颜色传送门的城市剥离开来,然后按升序排序,然后遍历一遍,只在相邻的元素之间建边

这样,图的连通性不变,任意两点间的距离也不变,但是建边的时间复杂度变成了线性

建边的复杂度解决了,查询的时间复杂度仍然很高,我们该如何解决?

为此,我们或许需要换一个方向思考

如果 i 不能一步到达 j 说明 i,j 颜色完全不同,否则可以一步到达

因此,对于一个查询,如果两个城市颜色完全不同,我们只需要找一座中间城市,使得其与两座城市有着一半相同的颜色

而且,如果这座城市在 [i,j] 里,那么答案只是 |ij| ,否则答案会变大

因此,我们可以维护每个城市,左边最近的有着一半相同颜色的城市,右边最近的...

如何维护呢?

posted @   纯粹的  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示