差分约束系统
2016-06-22 20:18
281 查看
好吧,其实很好理解
对于一些不等式
s[x1]-s[y1]>=a1
s[x2]-s[y2]>=a2
……
它们的解是什么呢?
首先可以将每个y向x连边
那么
从y能够更新走到x的最短路必须满足
s[x]>s[y]+a
移项
s[x]−s[y]>a
你发现了什么?
又变回了不等式!!
这就是差分约束系统
对于整个不等式组的解就是从1到n的最短路
当然,在某些题目中也有可能是求最长路
用一个spfa就行了
在一些题目中稍加转化,注意好隐含条件,就可以用差分约束搞定
对于一些不等式
s[x1]-s[y1]>=a1
s[x2]-s[y2]>=a2
……
它们的解是什么呢?
首先可以将每个y向x连边
那么
从y能够更新走到x的最短路必须满足
s[x]>s[y]+a
移项
s[x]−s[y]>a
你发现了什么?
又变回了不等式!!
这就是差分约束系统
对于整个不等式组的解就是从1到n的最短路
当然,在某些题目中也有可能是求最长路
用一个spfa就行了
在一些题目中稍加转化,注意好隐含条件,就可以用差分约束搞定
int i=0,j=1,bz ;dd[1]=0; memset(s,128,sizeof(s));s[0]=0;memset(bz,0,sizeof(bz));bz[0]=1; for(;i<j;) { int x=dd[++i]; for(int k=last[x];k;k=next[k]) { if (s[to[k]]<s[x]+data[k]) { s[to[k]]=s[x]+data[k]; if (bz[to[k]]==0) { dd[++j]=to[k];bz[to[k]]=1; } } } bz[x]=0; }
相关文章推荐
- Android进程间通信(二):使用AIDL实现进程间通信
- ovs-dpdk bridge internal port 访问延迟问题, fix
- 求二叉树的宽度C语言版
- Gacutil.exe(全局程序集缓存工具)
- C++ 虚继承和虚函数同时存在的对象模型
- 二叉树的前、中、后序遍历(递归和非递归)、层序遍历、深度、叶子节点个数
- 分享代码
- 事务的传播行为(讲得比较好)
- C++帮助手册man的安装和使用方法
- 欢迎使用CSDN-markdown编辑器
- JavaScript语法详解(四)
- GO语言学习:JSON处理
- 148. Sort List --- leetcode
- 数据传输效率
- [企业管理]抽象化劳动与体力劳动的区别
- body css样式中 设置宽度和背景色
- body css样式中 设置宽度和背景色
- body css样式中 设置宽度和背景色
- body css样式中 设置宽度和背景色
- body css样式中 设置宽度和背景色