小K的农场:
这个题是差分约束判断是否成环,建立所有点之间的关系,如果成环就说明这些条件互相矛盾
题目输入给的条件为
a-b>=c
a-b<=c
a-b==0(化为a-b<=0)
所以在a点与b点之间建一条权值为c的边表示a比b最大多种c个单位的作物
再在这些点之间跑spfa判断是否会出现环
有丶尴尬啊,感觉能写的都写了,没够字数(夹着烟的手微微颤抖)
那就再写一篇啊
天路:
这个题的答案在0~200之间的无理数,所以可以二分答案,对于每个二分的答案判断是否能够成负环
假定ans为最终答案(诶,这句话似曾相识,好像出现在了某题解里),所以V总/p总<=ans
所以可以转化为ans*p总-v总>=0
所以当bns[w]+ans*w[i].vis-w[i].zis<=bns[v]时
一开始将bns的数组全部清为0,所以这里只会出现负数
再从能扩展的点继续深搜,如果找到了一个点已经被标记过,但是现在还能再走这个点
就说明找到了负环,能找到一条负权回路就说明这个二分的答案小了缩小左边界的值
没找到就缩小右边界的值
如果左边界的值一直没有改变,就说明没有回路
(嗯,应该“凑”够字了)