ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

AcWing 1170 排队布局

2022-03-27 12:04:05  阅读:233  来源: 互联网

标签:负环 正环 不等式 1170 短路 排队 距离 a1 AcWing


一、题目分析

本题同样是差分约束的问题,要求\(1\)到\(n\)之间可能最大的距离,这使得我们更加深刻的理解了差分约束的思想。

\(AcWing\) \(1169\) 糖果里,仔细的讲解了差分约束的基本思想,以及求不等式组的最大解需要求最短路求最小解需要求最长路,这里不等式解的最大最小都是相对而言的。比如\(a_2 <= a_1 + 1,a_3 <= a_2 + 1\),求最短路和最长路的建图如下图所示:

对于最短路而言,设起点\(a_1 = 0\),求得\(a_2\)的最大值是\(1\),\(a_3\)的最大值是\(2\);对于最长路而言,设\(a_3 = 0\),则\(a_2\)的最小值是\(-1\),\(a_1\)的最小值是\(-2\),所以所谓的最值都是相对的,本题求\(1\)到\(n\)之间的最大距离很能够体现这种相对的关系

下面梳理下已知的结论:对于同一个不等式组,最短路和最长路建图是完全不同的,边的大小互为相反数,方向相反,如果不等式组无解,即没有合法的一组解使得所有的不等式都成立,那么建立的最短路图中一定存在负环,建立的最长路的图中一定存在正环。如果不等式组有解,最短路求得的是最大解,最长路求得的是最小解。

要求1到n之间的距离,不妨设1号点的坐标就是0,从0出发到达终点n,要想距离最大,则n号点的解就要最大,所以需要求最短路。当然如果将n的坐标设置为0,也可以通过求最长路来使得1到n之间的距离最大。本题的约束条件有三个,ai-1 <= ai;ai - aj <= L;ai - aj >= D。暂且不去分析具体的约束条件,先讨论一个问题,什么情况下起点到终点的距离可以无限大。关于这个问题,很多博客仅仅给出了必要条件,比如说从起点到达不了终点,图中的两点间没有可达的路径,没有约束距离就无限大,但这仅仅是必要条件而非充分条件。比如下面的不等式组:a1 <= a2 - 1,a2 <= a3 - 1,最短路建图如下:

从a3是可以到达a1的,图中没有孤立的点,a3 = 0时,a1就可以无限小,他们的距离就无限大。这个简单的例子可以看出,差分约束的不等式组对应的图如果没有环,起点和终点的距离是可以无限大的。要想两点间距离有限,需要图中有一个适当的环,来约束解的范围。上图的不等式组可以推出a1 <= a3 - 2,那么我再加上一个不等式约束a1 >= a3 - 4,,就成功的将a1到a3之间的距离限制在4个单位以内了。对应图中的表现不过是a1到a3连一条边权为4的边,我们分析此时环的长度4 - 1 - 1 = 2是大于0的。所以我们可以得出下面的结论:最短路的图中如果存在负环,差分约束问题无合法解,如果存在正环,则正环上任意两点间的距离都是有限的,不存在环的图上任意两点间的距离都可以是无限大的。这个结论可以类比到最长路的图中。换一种表达形式的话就是如果要图中的两点间距离有限,只需要存在一个正环,且这两个点都在环上。那么本题我们是否需要判断了负环还要判断正环呢?实际上是不需要的。

第一个约束条件ai >= ai-1,构建的最短路图中an可以到达an-1,an-1可以到达an-2,...。所以an可以到达每一点,包括a1。我们先以an为起点,求一遍最短路,如果存在负环,则不等式组无解,如果不存在负环,那么不等式组肯定有解,下面要判断的就是an - a1的结果是否可以无限大。在确定了不等式组有解的情况下,我们以a1为起点再求一遍最短路,当然a1不一定能够到达每一点,如果a1到达不了an,说明不存在一个环,环上同时包含a1到an。如果a1出发可以到达an,则一定存在由a1、an构成的正环。从ai出发可以到达an,an出发可以到达a1,这个条件保证了环的存在。第一次以an为起点求最短路时不存在负环,说明这个环一定不是负环,那么就是正环了(即使环的长度为0也是有解的)。根据我们上一段推出的结论可知,此时a1和an之间的距离是有限的,并且第二次求最短路过程中a1是起点,求得的an是最大值,所以此时的an就是我们要求的最大距离了。

最后再总结下本题给我们的经验(仅仅是个人经验总结)。最短路存在负环,差分约束问题无解,最短路存在正环,环上任意两点之间距离有限,最短路不存在环,任意两点间距离可以是无穷大;最长路存在正环,差分约束问题无解,最长路存在负环,环上任意两点之间距离有限,最长路不存在环,任意两点间距离可以是无穷大。总的代码如下:

标签:负环,正环,不等式,1170,短路,排队,距离,a1,AcWing
来源: https://www.cnblogs.com/littlehb/p/16062356.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有