前缀和、差分、差分约束

利用前缀和,可以很方便地求出指定区间内元素的和。关于这个已经是比较熟悉了,而且应用也比较多。树状数组核心就是利用前缀和。

差分的概念同前缀和类似,只不过是把求和操作转为了求差操作,而且细节上有所不同:当前项减去前一项,是当前项的差分。那么这样一来,对差分数组求和可以还原原数组。而且,如果要对原数组的一个区间执行整体操作时,可以对差分数组对应的两个端点加减1。这个性质也是在树状数组中应用。


差分约束感觉和差分联系不大...例题洛谷P3128POJ1201。差分约束讨论的是对于一系列形如 x[i] - x[j] <= a[k]的不等式,求 x[n-1] - x[0] 的最大值的问题。对于符合标准形式的不等式,构造j->i的一条有向边,权值为a[k]。构图完成后,求最大值的问题只需要用spfa跑一遍最短路即可。相应地,若问题求最小值,则标准形式变为x[i] - x[j] >= a[k],spfa需要跑最长路。

对于不是标准形式的不等式:1)x[i]-x[j]=a[k],拆为两个不等式; 2)对于x[i]-x[j]<a[k],变为x[i]-x[j]<=a[k]-1即可

做差分约束必须要注意到题目中隐藏的限制条件!!!而且,题目没有说明的话,是有可能出现无解的情况的(出现负环或者图不连通)。对于负环,用spfa判断;对于不连通,注意处理结束后特判。

posted @ 2020-10-09 17:08  太山多桢  阅读(126)  评论(0)    收藏  举报