差分约束
Ray.C.L
不开longlong见祖宗
展开
-
银河(tarjian)
思路:这个题目很差分约束,这里不用差分约束,这个图比较特殊可以用tarjian去做,我们发现如果无解就是判断有无正环,先用tarjian缩点,然后判断每个联通分量内有没有正环,如果没有则说明他们的边权都是0,例如a1>=a2>=a3>=a1形成环因为边权不大于0这是a1=a2=a3=0,他的第二问就是求在缩点以后的拓扑图上求最长路,直接递推一遍即可。 代码: #pragma GCC optimize(2) #include<bits/stdc++.h> using nam.原创 2021-02-22 13:46:29 · 262 阅读 · 0 评论 -
排队布局(差分约束)
思路:根据题意我们可以提取出3个不等式。用xi表示第i头牛的距离 1.xb-xa<=l 2.xb-xa>=d 3.xi<=x(i+1) 有第三个不等式可以推出其他所有的边。求最大距离spfa跑最短路吧3个不等式换成xi<=xj+c的形式,第一问满不满足方案数就是判断负环,第二问跑最短路。 代码: #pragma GCC optimize(2) #include<bits/stdc++.h> using namespace std; typedef long long.原创 2021-02-13 15:46:53 · 165 阅读 · 0 评论 -
区间(差分约束)
思路:区间[a,b]个数不少于C,区间问题我想到前缀和(Si表示从1到i中被包含数的个数),刚好可以组成不等式 1.Sb-Sa-1>=c 2.S0=0; 3.Si>=S(i-1) 4.Si-S(i-1)>=1 因为题目区间从0出发影响超级源点,那么我们吧给的区间都++,最后就是求dis[50001]。 大佬:这不一看就是前缀和不等式吗。我:???咋看的前缀和? 代码: #pragma GCC optimize(2) #include<bits/stdc++.h> usin.原创 2021-02-11 12:05:55 · 182 阅读 · 0 评论 -
糖果(差分约束)
差分约束:此图作者yxcls 思路:根据题意和差分约束的原理我们可以得出一些不等式关系如下: 1.A>=B&&B>=A 2.B>=A+1 3.A>=B 4.A>=B+1 5.B>=A 6.x>=1 7.x>=x0+1 8.x0=0 因为求的是最小值,那么求最长路,建图。求环时可以用栈代替队列进行优化。为了满足源点能到所有边需要把x0对所有点建边。 代码: #pragma GCC optimize(2) #include<bits/st.原创 2021-02-10 21:11:21 · 223 阅读 · 0 评论