随笔分类 - 图论--费用流
摘要:题面 "传送门" Sol 套路:找出重心,如果有两个就新建一个点 然后把这棵树hash一下 设$f[i][j]$表示第一颗树到$i$第二棵树到$j$,子树$i,j$同构的付出的最小代价 转移:每次把这一层hash值相同的点做一边二分图权匹配(KM/费用流)就好了 ~~一遍AC~~ cpp inclu
阅读全文
摘要:题面 "传送门" Sol 线性规划费用流解法用与求解未知数为非负数的问题 这道题可以列出一堆形如 $x[i]+x[j]+x[k]+... =a[p]$ 的不等式 我们强行给每个式子减去一个东西,使他变成这样 $x[i]+x[j]+x[k]+... y[p]==a[p]$ 然后相邻两个式子差分一下 把
阅读全文
摘要:题面 "传送门" Sol 消圈定理:如果一个费用流网络的残量网络有负环,那么这个费用流不优 于是这个题就可以建出残量网络,然后分数规划跑负环了
阅读全文
摘要:二分+网络流判定 首先处理出每个人和门间的距离 二分时间,连边时把每个门拆成mid个,一个人能在mid时间内到达,他也可以在这等一会儿,那么这mid个门之间连边 如果可以在x的时间内到达,那么x~mid之间他都可以出去,所以门向门加一连边 奉上未AC代码千万别复制 # include <bits/s
阅读全文
摘要:和那道可重区间集一样 不过这道题可能有垂直于x轴的线段,这就很烦了,直接连会有负环,判掉又会WA 可以想办法把r端点和l端点分开,又要保证答案不变 那么直接把区间l,r都乘以2,l=r时r++,否则l++,这样r就与l分开,并且对其它没有影响(相当于在x轴上多加了点) 这道题在LOJ上可以切 如果看
阅读全文
摘要:一个点同一时间只有一辆车,这个条件并没有用 因为你可以一辆车一辆车走 于是这个题就和深海机器人问题一样了,只需要把一个位置拆成两个点就好了 输出方案就DFS一下,记一个数组,每次搜过它就++,如果等于这条边流过的流量就不能走 然后就没了记得检查数组大小,不然WA两遍还不知道数组开小了 # inclu
阅读全文
摘要:费用流,第一个拆点,其它两个改一下INF就好 # include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof(a)) using namespace s
阅读全文
摘要:费用流 # 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, siz
阅读全文
摘要:费用流,该怎么建图怎么建 # include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof(a)) # define Copy(a, b) memcpy(
阅读全文
摘要:费用流,两个点间连费用为负价值容量为1的边,再连费用为零容量为INF的边,建立S,T,分别向起点终点连边,跑最小费用流,对答案取反即可 水 # include <bits/stdc++.h> # define RG register # define IL inline # define Fill(
阅读全文
摘要:费用流,离散化后,l向r连费用为负长度的边容量为1 相邻的连容量为k的边,最好建S和T # include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof(
阅读全文
摘要:来回走就把它当成走两条既可以了 费用流跑一跑 # include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof(a)) # define Copy(a,
阅读全文
摘要:分层图,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
阅读全文
摘要:我的方法比较复杂 S向每个仓库连初始量的边,每个仓库拆成两个,后往前连INF边,前往T连平均值的边,边权都是0 再S每个仓库向相邻仓库的第二个点连INF边,边权为1 再费用流即为答案 # include <bits/stdc++.h> # define RG register # define IL
阅读全文
摘要:拆点跑费用流,套模板 # include <bits/stdc++.h> # define IL inline # define RG register # define Fill(a, b) memset(a, b, sizeof(a)) using namespace std; typedef
阅读全文
摘要:费用流+最大流 先一遍最大流 再所有边扩容,新加节点限制扩容量k # include <bits/stdc++.h> # define IL inline # define RG register # define Fill(a, b) memset(a, b, sizeof(a)) # defin
阅读全文
摘要:题目描述 给出一个n*n的矩阵,每一格有一个非负整数Aij,(Aij <= 1000)现在从(1,1)出发,可以往右或者往下走,最后到达(n,n),每达到一格,把该格子的数取出来,该格子的数就变成0,这样一共走K次,现在要求K次所达到的方格的数的和最大 输入输出格式 输入格式: 第一行两个数n,k(
阅读全文

浙公网安备 33010602011771号