![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
费用流
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 评论 -
线性规划费用流解法(Bzoj1061: [Noi2008]志愿者招募)
题面 传送门 Sol 线性规划费用流解法用与求解未知数为非负数的问题 这道题可以列出一堆形如 x[i]+x[j]+x[k]+...>=a[p]x[i]+x[j]+x[k]+...>=a[p]x[i]+x[j]+x[k]+...>=a[p] 的不等式 我们强行给每个式子减去一个东西,使他变成这样 x[i]+x[j]+x[k]+...−y[p]==a[p]x[i]+x[...原创 2018-05-30 22:20:50 · 520 阅读 · 0 评论 -
Bzoj3597: [Scoi2014]方伯伯运椰子
题面 传送门 Sol 消圈定理:如果一个费用流网络的残量网络有负环,那么这个费用流不优 于是这个题就可以建出残量网络,然后分数规划跑负环了 # include <bits/stdc++.h> # define IL inline # define RG register # define Fill(a, b) memset(a, b, sizeof(a)) using...原创 2018-05-30 22:08:53 · 156 阅读 · 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 评论 -
分配问题
费用流# 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 评论 -
[SDOI2009]晨跑
拆点跑费用流,套模板# include <bits/stdc++.h> # define IL inline # define RG register # define Fill(a, b) memset(a, b, sizeof(a)) using namespace std; typedef long long ll; const int _(410), __(2e5 + 10), INF(21原创 2017-12-29 19:22:08 · 193 阅读 · 0 评论 -
[HNOI2007]紧急疏散
二分+网络流判定 首先处理出每个人和门间的距离 二分时间,连边时把每个门拆成mid个,一个人能在mid时间内到达,他也可以在这等一会儿,那么这mid个门之间连边 如果可以在x的时间内到达,那么x~mid之间他都可以出去,所以门向门加一连边 奉上未AC代码千万别复制 # include # define IL inline # define RG register # define Fi原创 2018-01-04 20:49:12 · 721 阅读 · 1 评论 -
【ZJOI2010】网络扩容
费用流+最大流 先一遍最大流 再所有边扩容,新加节点限制扩容量k# include <bits/stdc++.h> # define IL inline # define RG register # define Fill(a, b) memset(a, b, sizeof(a)) # define Copy(a, b) memcpy(a, b, sizeof(a)) # define ID(a原创 2017-12-29 10:35:15 · 206 阅读 · 0 评论 -
Luogu2045 方格取数加强版
题目描述给出一个n*n的矩阵,每一格有一个非负整数Aij,(Aij <= 1000)现在从(1,1)出发,可以往右或者往下走,最后到达(n,n),每达到一格,把该格子的数取出来,该格子的数就变成0,这样一共走K次,现在要求K次所达到的方格的数的和最大输入输出格式输入格式:第一行两个数n,k(1<=n<=50, 0<=k<=10) 接下来n行,每行n个数,分别表示矩阵的每个格子的数输出格式:一个数,原创 2017-12-29 08:56:28 · 203 阅读 · 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 评论 -
汽车加油行驶问题
分层图,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 评论 -
Bzoj3197: [Sdoi2013]assassin
题面 传送门 Sol 套路:找出重心,如果有两个就新建一个点 然后把这棵树hash一下 设f[i][j]f[i][j]f[i][j]表示第一颗树到iii第二棵树到jjj,子树i,ji,ji,j同构的付出的最小代价 转移:每次把这一层hash值相同的点做一边二分图权匹配(KM/费用流)就好了 一遍AC # include <bits/stdc++.h> # defin...原创 2018-05-30 22:26:17 · 189 阅读 · 0 评论