浅谈差分约束系统

前言

差分约束系统应该是一个比较有用的算法。它建立在图的思想上,常与最短(长)路算法一起出现。


一道例题

下面是一组不等式:

\[A-B≥5\tag{①}\]

\[B-E≥7\tag{②}\]

\[A-E≥6\tag{③}\]

\[D-A≥9\tag{④}\]

\[B-C≥6\tag{⑤}\]

\[C-E≥2\tag{⑥}\]

现在问你一个问题:\(A-E\)的最小值是多少

其实在这组不等式中,我们有很多方法得到一个形如\(A-E≥x\)的式子:

  • 第一种方法:由③式直接得\(A-E≥6\)
  • 第二种方法:①+②得\(A-E≥12\)
  • 第三种方法:①+⑤+⑥得\(A-E≥13\)

因此,我们可以求出答案:\(A-E\)的最小值是13。


用差分约束系统来求解上面这个问题

通过我们刚才的解题步骤,我们可以总结归纳出一个解决该类问题的通用方法,也就是差分约束系统

我们刚才通过\(A-B≥5\)、\(B-C≥6\)、\(C-E≥2\)来求出了\(A-E≥13\),仔细观察可以发现,相邻的两个式子中都有一个相同的字母,而我们正是借助了这个字母来实现转移的。

是不是有一种熟悉的感觉?

这不就是最长路径嘛!

没错,对于一个类似于\(A-B≥x\)的式子,我们可以从\(B\)向\(A\)连一条有向边,且这条边的边权为\(x\)。

这样,对于上面这个问题,我们只需求出\(E\)至\(A\)的最长路即可。


不等式的转换

对于\(A-B≥x\)的式子,我们是从\(B\)向\(A\)连边求最长路,而对于\(A-B≤x\),则需从\(A\)向\(B\)连边求最短路。
有一个要注意的地方,就是一张图你的式子要么全是\(A-B≥x\)的形式,要么全是\(A-B≤x\)的形式,不然你就无法用差分约束系统来求解答案了。

那么如果题目中给出多种式子呢?就不能用差分约束系统了吗?

不然,其实我们可以将这些式子全部转化为同一种式子(\(A-B≥x\)或\(A-B≤x\),下面以\(A-B≥x\)为例):

  • \(A=B\):这个式子可以拆成\(A≥B\)和\(B≥A\),再转换一下就变成了\(A-B≥0\)和\(B-A≥0\)
  • \(A≤B\):这个式子可以转换成\(B-A≥0\)
  • \(A≥B\):这个式子可以转换成\(A-B≥0\)
  • \(A<B\):这个式子可以改写成\(A≤B-1\),再转换一下就变成了\(B-A≥1\)
  • \(A>B\):这个式子可以改写成\(A-1≥B\),再转换一下就变成了\(A-B≥1\)
  • \(A-B≤x\):这个式子可以转换成\(B-A≥-x\)
  • \(A-B≥x\):这个式子不用转换
  • \(A-B<x\):这个式子可以改写成\(B-A>-x\),再转换一下就变成了\(B-A≥1-x\)
  • \(A-B>x\):这个式子可以转换成\(A-B≥x+1\)

这样,遇到给你一些不等式,请你求出两数之差的最大(最小)值的问题,就可以轻松解决了。


例题

【洛谷1993】小K的农场

【洛谷3275】[SCOI2011]糖果

原文地址:https://www.cnblogs.com/chenxiaoran666/p/Constraint.html

时间: 2024-10-26 09:25:32

浅谈差分约束系统的相关文章

浅谈差分约束系统——图论不等式的变形

浅谈差分约束系统——图论不等式的变形 ----yangyaojia 版权声明:本篇随笔版权归作者YJSheep(www.cnblogs.com/yangyaojia)所有,转载请保留原地址! 一.定义 如若一个系统由n个变量和m个不等式组成,并且这m个不等式对应的系数矩阵中每一行有且仅有一个1和-1,其它的都为0,这样的系统称为差分约束( difference constraints )系统. 二.分析 简单来说就是给你n个变量,给m个形如x[i]-x[j]≥k①或x[i]-x[j]≤k②.求两

浅谈差分数组的原理及简单应用

一.差分数组的定义及用途 1.定义: 对于已知有n个元素的离线数列d,我们可以建立记录它每项与前一项差值的差分数组f:显然,f[1]=d[1]-0=d[1];对于整数i∈[2,n],我们让f[i]=d[i]-d[i-1]. 2.简单性质: (1)计算数列各项的值:观察d[2]=f[1]+f[2]=d[1]+d[2]-d[1]=d[2]可知,数列第i项的值是可以用差分数组的前i项的和计算的,即d[i]=f[i]的前缀和. (2)计算数列每一项的前缀和:第i项的前缀和即为数列前i项的和,那么推导可知

浅谈差分数组的应用(二)&amp;[NOIP2012]借教室题解

[NOIP2012提高&洛谷P1083]借教室 Description 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样.面对海量租借教室的信息,我们自然希望编程解决这个问题. 我们需要处理接下来n天的借教室信息,其中第i天学校有ri个教室可供租借.共有m份订单,每份订单用三个正整数描述,分别为dj,sj,tj,表示某租借者需要从第sj天到第tj天租借教室(包括第sj天和第tj天),每天需要

浅谈差分约束问题

差分约束 差分约束是解决这样一类问题 给出\(n\)个形如\(x[j]-x[i]<=k\)的式子,求\(x[n]-x[1]\)的最大/最小值 思路 其实这个问题是挺套路的 我们把给出的式子变一下 \(x[j]-x[i]<=k\) \(x[j]<=x[i]+k\) 我们不难联想到图论中最短路的性质 假设\(d[x]\)表示\(1\)到\(x\)的最短路 那么对于任意一条边\((u,v)\) 有\(d[v]<=d[u]+k\)(k表示边权) 可能有些抽象,举个例子 经过计算不难得到三个

浅谈树上差分

浅谈树上差分 [引子] 我们遇到一些关于树的问题时,往往需要我们统计一些树上的信息,比如子树和,路径边覆盖.点覆盖(目前没见过别的类型).暴力的解法当然是遍历逐个点对其权值进行修改. 类比序列问题,其在进行区间修改时,可以用差分将\(O(n)\)复杂度降为\(O(1)\).在树上我们是对一条链进行处理,那差分在树上可不可用呢?答案是肯定的. [从序列到树] 在一个序列上进行差分的操作,相信各位都十分熟悉:假设当前我们要对一个序列的\(l\sim r\)区间的每个数执行\(+k\)操作,那么对于差

浅谈对差分隐私的理解

在听完第五组的报告之后,浅谈一下对差分隐私的认识,主要针对差分隐私的思想做一个大致的梳理. 为什么会产生差分隐私? 由于有些“聪明”的用户为了知道某些信息,可以通过两次查询结果的差异进行对比,从而在两次数据的对比中找到有用的信息.正如在杨顼组的报告中提到的查询二等兵约瑟夫阿伦是否阵亡的信息,可以通过查询D5和D6两次数据结果,将两次数据结果进行对比就可以知道约瑟夫阿伦是否阵亡的消息. 差分隐私的主要思想: 差分隐私是基于噪音的安全计算方法,它的思想是:对计算过程用噪音干扰,让原始数据淹没在噪音中

.net中对象序列化技术浅谈

.net中对象序列化技术浅谈 2009-03-11 阅读2756评论2 序列化是将对象状态转换为可保持或传输的格式的过程.与序列化相对的是反序列化,它将流转换为对象.这两个过程结合起来,可以轻松地存储和传输数 据.例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象.反之,反序列化根据流重新构造对象.此外还可以将对象序列化后保存到本地,再次运行的时候可以从本地文件 中“恢复”对象到序列化之前的状态.在.net中有提供了几种序列化的方式:二进制序列化

浅谈——页面静态化

现在互联网发展越来越迅速,对网站的性能要求越来越高,也就是如何应对高并发量.像12306需要应付上亿人同时来抢票,淘宝双十一--所以,如何提高网站的性能,是做网站都需要考虑的. 首先网站性能优化的方面有很多:1,使用缓存,最传统的一级二级缓存:2,将服务和数据库分开,使用不同的服务器,分工更加明确,效率更加高:3,分布式,提供多台服务器,利用反向代理服务器nginx进行反向代理,将请求分散开来:4,数据库的读写分离,不同的数据库,将读操作和写操作分开,并实时同步即可:5,分布式缓存,使用memc

单页应用SEO浅谈

单页应用SEO浅谈 前言 单页应用(Single Page Application)越来越受web开发者欢迎,单页应用的体验可以模拟原生应用,一次开发,多端兼容.单页应用并不是一个全新发明的技术,而是随着互联网的发展,满足用户体验的一种综合技术. SEO 一直以来,搜索引擎优化(SEO)是开发者容易忽略的部分.SEO是针对搜索(Google.百度.雅虎搜索等)在技术细节上的优化,例如语义.搜索关键词与内容相关性.收录量.搜索排名等.SEO也是同行.市场竞争常用的的营销手段.Google.百度的搜