Luogu P5590 赛车游戏 题解

北城以北 提交于 2019-12-01 07:22:00

Luogu P5590 赛车游戏 题解

写在前面

众所周知这是一篇题解,当然这也是一篇经验的总结。

它源自于洛谷月赛,传送门:P5590 赛车游戏

笔者写下这篇题解,一是希望自己这次的错误不要再犯,二是希望能帮助大家。

题解部分

题面简析

题意大致可以概括为:给你 \(n\) 个点 \(m\) 条边的 一张图,你需要给每条边加上边权,使得\(1-n\)的所有路径的长度均相等。

现在感觉问题简单多了,我们可以想到暴力地添加边权(反正边权也只有 \(1~9\)

解题思路

很明显上面的办法是不能拿满分的。并且我拿到本题并没有想过要打暴力。

我们假设这张图存在两个顶点 \(u,v\),它们之间的边权为 \(val<u,v>\)

那么就有:\(dis[u]+val<u,v>=dis[v]\)\(dis\)数组是节点\(1\)到其他点的路径长度最值)

至于这个最值是什么,稍后再解答。

我提出了上面那个式子,那么很明显我们要求的是 \(val<u,v>\),这东西一定满足 \(1≤val<u,v>≤9\)

好了,现在变形一下式子:\(1≤val<u,v>=dis[v]-dis[u]≤9\),看出来什么了吗?

你仔细看看:\(1≤dis[v]-dis[u]≤9\),差分约束?

没错,就是差分约束,约束条件:\[\left\{ \begin{aligned} dis[v]-dis[u]≥1\\ dis[u]-dis[v]≥-9\\ \end{aligned} \right. \]

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!