[poj 3159]Candies[差分约束详解][朴素的考虑法]

博客介绍了POJ 3159题目的题意和解决思路,通过差分约束系统来求解最大差值问题。文中详细解释了差分约束与最短路问题的联系,如何构建有向图,并讨论了如何求解最大差值和最小差值。此外,还提及了使用SPFA算法和队列的潜在TLE问题。
摘要由CSDN通过智能技术生成

题意

编号为 1..N 的人, 每人有一个数;

需要满足

dj - di <= c

求1号的数与N号的数的最大差值.(略坑: 1 一定要比 N 大的...difference...不是"差别", 而是"做差"....)

思路

差分约束

差分约束顾名思义就是以"差值"作为约束条件的规划问题. 这个"差值"的特点使得这个问题可以转化为最短路问题(或最长路?)

由于SFPA(或Dijkstra)中的松弛操作:

d[v] <= d[i] + w;

移项之后可以得到

d[v] - d[u] <= w;

这和差分约束的方程形式相同. 并且也满足左边为未知量, 右边为常量; 于是可以建立有向图来解决这个问题.

将未知量设为顶点, 右边常量设为边权; 按照最短路问题的模型, 顶点的值即其到源的距离.则自然有"源"的值为0.

在差分约束系统中, 若有一组解X, 则X + k(任意实数)也为一组解.因为限制条件是"差值".

对应图的模型: 对于这样一组顶点, 源的选择会改变顶点的值, 但不会改变顶点的差值. <暂时没有更精确的理解>


本题中要求1号顶点和N号顶点的最大差值,感觉是"求最长路",为啥用一个求最短路的方法呢?

其实是在于两个问题的关系.

对于差分约束的方程组, 不等式可以全部都不取等号.

而最短路中不等式的用途则是不断调整各个变量的值, 使其对于每一个不等式(限制), 都取满足它的"上界", 即松弛操作.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值