遇到了一些很不错的差分约束系统的题目 我觉得需要总结一下的样子。
LINK:种树 万壑树参天 千山响杜鹃 差分约束 觉得海星 由于每个位置只能种一棵树和区间的限定我们不难想到 利用前缀和数组来建图。
显然 有条件 dr-dr-1<=1 dr-dr-1>=0 和某些去加问题 dr-dl-1>=cnt 什么 的通过建图 我们发现要构造出来的解其实就是 d数组了。
考虑 一下怎么跑?从哪开始跑 好像没有一个起点的样子 虚设源点 从而进行构解 源点如果为 0的话 好像没有什么约束条件的样子但是源点设为 n+1 那么则有 dn+1-di>=0
这个条件 我们设dn+1=0 构造出来一组负数解 即可 考虑如何满足最小的取值 我觉的是 由于跑的是最短路 所以求出的解必然是一组 可能不符合实际意义但是是最优的解 。
所以我们调整一下即可 全部都减去最小的 最小的显然是dis[1] 由于dis n+1为0 答案就为 disn+1-dis[1] ==-dis[1]了。(我觉得应该没锅
//#include#include #include #include #include #include<string> #include #include #include #include #include #include #include #include #include #include<set> #include
LINK:狡猾的商人 商人 总是 具有高雅的智慧吧。
还是考虑前缀和建图 不过不同的是 某个区间特定的值是有了我们是这样转换的 dr-dl-1>=w dr-dl-1<=w
所以就可以直接跑了 ...
//#include#include #include #include #include #include #include #include #include #include #include #include<string> #include #include #include #include #include
LINK:天平 其实在我的眼中天平从来都没有平过..毫无用处的东西...
这题就很神了 很鬼畜的样子 发现差分约束总是 要对建图有一定的要求。
有一堆约束条件 但是可能有未知的砝码 所以最后我们利用spfa构造的只是其中的一种很难完成题目中所说的 确定的情况。
神仙题目 原来跑的是floyd 处理差分约束的关系。可以设两个数字 d[i][j] 表示i和j砝码最多差多少克 b i j 表示i和j砝码最少差多少克。
这个东西可以利用floyd实现 这个东西 然后最后求的话其实就是暴力枚举两个东西 判断即可。
//#include#include #include #include #include #include<string> #include #include #include #include #include #include #include #include #include #include<set> #include