![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络流24题部分
Cyhlnj
这个作者很懒,什么都没留下…
展开
-
数字梯形问题
费用流,第一个拆点,其它两个改一下INF就好# include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof(a)) using namespace std; typedef long long ll; const int _(1010), __(1e6原创 2018-01-03 22:15:23 · 303 阅读 · 0 评论 -
分配问题
费用流# include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof(a)) # define Copy(a, b) memcpy(a, b, sizeof(a)) using namespace std; typedef long long ll; c原创 2018-01-03 21:46:29 · 362 阅读 · 0 评论 -
最长k可重线段集问题
和那道可重区间集一样 不过这道题可能有垂直于x轴的线段,这就很烦了,直接连会有负环,判掉又会WA 可以想办法把r端点和l端点分开,又要保证答案不变 那么直接把区间l,r都乘以2,l=r时r++,否则l++,这样r就与l分开,并且对其它没有影响(相当于在x轴上多加了点)这道题在LOJ上可以切如果看到了的并且有数据可以卡掉我的代码的请在下面评论# include <bits/stdc++.h> #原创 2018-01-04 11:59:05 · 332 阅读 · 0 评论 -
火星探险问题
一个点同一时间只有一辆车,这个条件并没有用 因为你可以一辆车一辆车走 于是这个题就和深海机器人问题一样了,只需要把一个位置拆成两个点就好了 输出方案就DFS一下,记一个数组,每次搜过它就++,如果等于这条边流过的流量就不能走 然后就没了记得检查数组大小,不然WA两遍还不知道数组开小了# include <bits/stdc++.h> # define RG register # define原创 2018-01-04 09:06:20 · 415 阅读 · 0 评论 -
负载平衡问题
我的方法比较复杂 S向每个仓库连初始量的边,每个仓库拆成两个,后往前连INF边,前往T连平均值的边,边权都是0 再S每个仓库向相邻仓库的第二个点连INF边,边权为1 再费用流即为答案# include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof(a原创 2018-01-02 19:49:55 · 218 阅读 · 0 评论 -
魔术球问题
枚举放的球,先假设新建柱子,拆成两个点,第一个点连S,表示后面还可以放;第二个连T表示放到其他柱子上;再枚举放过的数和它是否组成完全平方数,枚举的数的第一个点向它的第二个点连边,表示这个球可以放到其他球上 每次跑最大流出来的表示会消掉的柱子个数,如果此时球-消去的比n大则break输出答案# include <stdio.h> # include <stdlib.h> # include <ios原创 2018-01-02 20:02:24 · 244 阅读 · 0 评论 -
太空飞行计划问题
最大权闭合子图:等于正边权 - 最大流(最小割) 我的理解 最大收益就是要求最小损失,那么用最小割模型(别问我是怎么想到的) S向实验连边,表示割掉这条边,把实验割给T会有损失 T向配置连边,表示割掉这条边,把配置割给S会有损失 跑出的最小割(最大流)就是损失# include <stdio.h> # include <stdlib.h> # include <iostream> # in原创 2018-01-02 20:11:03 · 185 阅读 · 0 评论 -
骑士共存问题
套路啊 棋盘黑白染色,S连黑,白连T,黑白间根据骑士的走法连边,求出最小割 最大独立集=点数-最小点覆盖;最小点覆盖=最大流=最小割# include <stdio.h> # include <stdlib.h> # include <iostream> # include <string.h> # include <math.h> # define ll long long # define原创 2018-01-02 20:22:05 · 254 阅读 · 0 评论 -
方格取数问题
又是套路啊 黑白染色,S,T连不同色的,求最小割,用总和-最小割即为答案# include <stdio.h> # include <stdlib.h> # include <iostream> # include <string.h> # include <math.h> # define ll long long # define RG register # define IL inline原创 2018-01-02 20:24:18 · 226 阅读 · 0 评论 -
星际转移问题
S向地球连k的边,每天每个地方由上一天连INF边,每天月亮向T连边 枚举天数获取每天飞船的位置,由上一天的位置向这一天连满载的边 跑到人都送完位置,在合适的时候(玄学)break输出无解# include <stdio.h> # include <stdlib.h> # include <iostream> # include <string.h> # include <math.h> # de原创 2018-01-02 20:38:40 · 214 阅读 · 0 评论 -
汽车加油行驶问题
分层图,k只有10,每个k一层图 跑费用流,但容量为1,所以就是SPFA # include <bits/stdc++.h> # define RG register # define IL inline # define ID(a, b, c) ((c) * N * N + (a - 1) * N + b) # define Fill(a, b) memset(a, b, sizeof(a原创 2018-01-03 15:22:07 · 693 阅读 · 0 评论 -
航空路线问题
来回走就把它当成走两条既可以了 费用流跑一跑# include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof(a)) # define Copy(a, b) memcpy(a, b, sizeof(a)) using namespace std; typ原创 2018-01-03 17:35:52 · 414 阅读 · 0 评论 -
最长k可重区间集问题
费用流,离散化后,l向r连费用为负长度的边容量为1 相邻的连容量为k的边,最好建S和T# include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof(a)) # define Copy(a, b) memcpy(a, b, sizeof(a)) usi原创 2018-01-03 18:00:49 · 230 阅读 · 0 评论 -
运输问题
费用流,该怎么建图怎么建# include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof(a)) # define Copy(a, b) memcpy(a, b, sizeof(a)) using namespace std; typedef long l原创 2018-01-03 21:42:19 · 480 阅读 · 0 评论 -
深海机器人问题
费用流,两个点间连费用为负价值容量为1的边,再连费用为零容量为INF的边,建立S,T,分别向起点终点连边,跑最小费用流,对答案取反即可 水# include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof(a)) using namespace std;原创 2018-01-03 21:25:08 · 258 阅读 · 0 评论