Luogu P2269 [HNOI2002]高质量的数据传输

这题给大家提供一下思路~ (为不想贴代码找借口)

声明:两个思路都是正确的,并且都AC了。(逃)


总体布局

求传输失败率\(1-\prod(1-p_{i})\)最小就是求 传输成功率\(\prod(1-p_{i})\)最大。

求一个最短路,使得传输成功率(1-失败率)最大为第一关键字,时延最小为第二关键字。

思路1

正如另一篇题解的思路,我们可以稍微改变一下传统的spfa:

在松弛操作时,如果传输效率更好,则松弛传输效率该效率下对应的时延。如果传输效率一致,则只松弛该效率下对应的时延。如果传输效率更差,什么都不更新。

这样就能保证两个关键字的次序。


思路2(次好)

我们可以先spfa一下传输成功率,再spfa时延。

在spfa时延时,松弛时的判断是否更新的条件语句中加一个判断 (成功率[u]*(1-丢失率边[u][v])==成功率[v])

也就是可以理解为,沿着传输成功率最大的边(符合第一关键字的边)来更新各个节点的时延。

这样也可以。


后记

这题是我时隔了半年两次写的题目。那时是思路2,还没写对,只有10分,现在有了两个思路。不同的水平,果然有不同的感悟。算法有时候,还真的是一门值得研究的艺术。

posted @ 2019-06-05 21:01  Hygebra  阅读(174)  评论(0编辑  收藏  举报