网络流经典建模题
文章平均质量分 56
issue是fw
19 years old, struggling in life, chasing daydreams.
展开
-
2019 China Qinhuangdao Onsite E. Escape(最大流,拆点)
LINK在纸上画一画发现任意两个机器人的路径不可能合并那可能相交吗?可能,但是交点处一定没有放转换装置。由此我们得到①.如果一个格子放了转换装置,那么只能被通过一次②.如果一个格子没有放转换装置,那么可以被通过两次竖直方向上一次,水平方向上一次。所以我们拆点,每个点xxx拆为水平点xxx和垂直点yyy水平相邻的格子连水平点的边,垂直相邻的格子连垂直点的边,流量都为111这样因为连出去的边流量为111,所以只会被通过一次我们再让x,yx,yx,y彼此连边,流量为111,表示转向这样的话原创 2021-05-19 22:26:01 · 193 阅读 · 0 评论 -
【Gym】101194J Mr.Panda and TubeMaster(二分图费用流)
LINK发现每个点上下的管道只能选一条,左右管道只能选一条而且管道连接的两个格子的奇偶性质一定不同,所以黑白染色如何连边??考虑到必须成环这一点,发现只要满足每个点在竖直方向上选一条,在水平方向上选一条就能成环,因为不存在终止点(每个点都能出去)考虑把一个点拆分为两个点,原点和虚拟点所以让白点负责横向的管道,分别向左右点的/虚拟点连边所以让黑点负责纵向的管道,分别向上下点的虚拟点连边源点sss向每个点的原点连流量111费用000的边每个点的虚拟点向ttt连流量111费用000的边这样跑最原创 2021-04-10 14:44:57 · 1587 阅读 · 0 评论 -
P3965 [TJOI2013]循环格(二分图最小环)
LINK这不是裸题吗考虑把RRR看成连向右边格子的边,L,U,DL,U,DL,U,D同理这个就是一个图,每个点出发能回到自己,说明每个点都处于一个环中题意转化为,把原图改造成环的最小代价我们知道每个点可以选择,向上下左右各连一条边现在有n∗mn*mn∗m个点,我们把每个点拆为入点和出点sss连向所有入点,所有出点连向ttt,流量111费用000入点向相邻格子的出点连一条边,流量111费用为代价(需要改变字母费用是111否则是000)跑最小费用最大流就是答案。why??why??why??原创 2021-04-08 23:02:15 · 271 阅读 · 0 评论 -
牛客2020多校 Minimum-cost Flow(预处理费用流)
LINK题意nnn个点mmm条边的无向网络图,第iii条边的花费是cic_ici现在有qqq个询问,形式如下当每条边的容量是uivi\frac{u_i}{v_i}viui时,从节点111向nnn传送一个流量的最小花费是多少??二刷,思路清楚了不少首先把每条边的容量都乘上一个viv_ivi变成正数,最后就是求流量vvv的最小花费了这样可以用费用流求解,但是费用流是最大流时的最小费用但是我们可以这样,当流量超过vvv的时候停下来不再增广那么此时肯定多加了一部分流量,设此时流量是v+原创 2021-04-08 20:39:21 · 324 阅读 · 0 评论 -
P3872 [TJOI2010]电影迷(扩展最大全闭合图)
LINK扩展最大权闭合图容易想到源点向正点权连边,负点权向汇点连边,流量为各自权值的绝对值这样初始价值就是正点权的价值对于限制(x,y,val)(x,y,val)(x,y,val),由xxx向yyy连边,流量为valvalval.至于正确性,这里有证明其实我对这种做法仍然存有疑虑,所幸有第二种做法。集合划分模型我们把每个点的点权都加上一个很大的数basebasebasesss向点uuu连流量为valu+baseval_u+basevalu+base的边,uuu向ttt连流量为baseba原创 2021-04-05 22:15:16 · 232 阅读 · 0 评论 -
P4194 矩阵(二分+有源汇可行流)
LINK找一个矩阵BBB使得每个元素都在[L,R][L,R][L,R]内设矩阵C=A−BC=A-BC=A−B最小化CCC的每一列和的绝对值,每一行和的绝对值的最大值考虑最后的答案是midmidmid那么CCC的每一行sumhisumh_isumhi绝对值之和,每一列sumlisuml_isumli绝对值之和都小于等于midmidmid也就是∣∑j=1mAi,j−∑j=1mBi,j∣<=mid|\sum\limits_{j=1}^m A_{i,j}-\sum\limits_{j=1}^原创 2021-04-04 13:28:15 · 174 阅读 · 0 评论 -
P4589 [TJOI2018]智力竞赛(上下界网络流)
LINK用有源汇上下界可行流就是裸题了,简单说一下建立源点sss连向虚点xuxuxu,流量为[0,n+1][0,n+1][0,n+1],表示只能答题n+1n+1n+1次把一个人拆分为uuu和u+mu+mu+m,如果必须要经过这个人流量是[1,n+1][1,n+1][1,n+1],否则是[0,n+1][0,n+1][0,n+1]然后xuxuxu连向uuu流量为[0,n+1][0,n+1][0,n+1],表示可以走任意次u+mu+mu+m连向ttt流量[0,n+1][0,n+1][0,n+1],表示可原创 2021-04-04 11:43:04 · 279 阅读 · 0 评论 -
CF277E Binary Tree on Plane(二叉树::二分图匹配)
LINK一颗二叉树有n−1n-1n−1条边我们把每条边看作一个匹配规则,每个点可以作为父亲至多两次,作为儿子一次那么可以求一个最大匹配,把每个点作为父亲的状态放在二分图左边,作为儿子的状态放在二分图右边这样所有匹配规则都是连接这一个父亲一个儿子源点向父亲节点连边,流量为222费用为000儿子节点向汇点连边,流量为111费用为000然后按照匹配规则连接父亲和儿子的边,费用为欧几里得距离由于是个二分图,所以求最大匹配一定没错,最多有n−1n-1n−1的流量跑最小费用最大流即可#include原创 2021-04-02 20:14:52 · 298 阅读 · 0 评论 -
P3159 [CQOI2012]交换棋子(模型转换:拆点费用流)
LINK题意一个010101矩阵,每次可以交换相邻的两个格子,每个格子限制了一定的交换次数问从当前状态变到目标状态的最小操作次数,或者说明这是不可能的。这不是水题??有两个显而易见的事实①.如果把所有111的格子复原了,那么所有000的格子也会复原②.如果相邻的格子是同色的,那么不会交换,交换是没有意义的由此我们知道,在某个111归位的路径上不会经过任何其他的111,问题转化为在图上找到一条条的路径因为每个格子的交换次数也存在限制,我们拆点为入点和出点源点向所有初始矩阵111的入点连边原创 2021-04-01 16:51:02 · 209 阅读 · 0 评论 -
P5039 [SHOI2010]最小生成树(连通性+最小割)
LINK一条权值为valvalval的边(端点是AAA和BBB)在最小生成树中当且仅当权值小于valvalval的边都连上后这条边的两个端点还没有被连通。这个很好理解,通过观察krustalkrustalkrustal算法可以知道使用并查集维护的连通性相当于把边都连上的连通性再观察一下我们的操作,选择一条边不改变,使得其他边权值都减一这其实等价于只把选中的边的权值加一,因为在构造最小生成树的过程中,只有边权的相对大小是有用的那么一条边权值为xxx的边执行max(0,val+1−x)max(0,v原创 2021-04-01 12:23:16 · 239 阅读 · 0 评论 -
P4304 [TJOI2013]攻击装置(最大独立集)
LINK问题可以抽象为图上选择最多的点,使得任意两个点间没有边很明显的最大独立集最大独立集=点数-最大匹配所以这里需要抽象为二分图求最大匹配,发现按照马走日的走法,知道的点一定是性质不同的点这个性质不同就是横坐标+纵坐标的奇偶性质由奇数点连向偶数点构造二分图即可#include <bits/stdc++.h>using namespace std;const int maxn=5e6+10;const int inf=1e9;struct edge{ int to,nxt原创 2021-04-01 11:57:20 · 243 阅读 · 0 评论 -
P5934 [清华集训2012]最小生成树(思维+最小割)
LINK很妙的一题,但看完做法后才深知自己多傻逼考虑怎样的边(u,v,l)(u,v,l)(u,v,l)可能在最小生成树上首先我们会把权值小于lll的边全部用来构造最小生成树此时如果u,vu,vu,v不连通,我们就会选择这条边所以问题的实质是让权值小于lll的边连通性达到最大后,u,vu,vu,v仍然不连通就是最小割了!!!把前面的边都加上去构成无向图,跑最小割最大生成树同理#include <bits/stdc++.h>using namespace std;const in原创 2021-03-31 23:13:38 · 329 阅读 · 0 评论 -
P1646 [国家集训队]happiness(文理分科网络流)
LINK二刷了,复习一下网络流,因为这题实在太经典了。①.做法一:一对关系建立一个虚点这种做法比较简单。源点连向每个人流量为选文科的价值,每个人连向汇点为选理科的价值对于某两个人同时选文/理科能额外得到valvalval的收益怎么办??这里以文科为例,假如两个人同时选择文科说明连向理科的边都断掉了这其实我们新建虚点kkk,源点连向kkk流量为valvalval,kkk连向这两个人流量为infinfinf这样就造成,任何一个人选择理科,也就是保留了人到汇点的边,那么kkk就能到汇点必须割掉va原创 2021-03-31 20:29:31 · 259 阅读 · 0 评论 -
P1251 餐巾计划问题(上下界最小费用流)
LINK考虑上下界网络流每个点拆分为入点iniin_iini和出点outiout_iouti新建源点sss,新建汇点tttsss连向每个入点流量为[0,inf][0,inf][0,inf],边权ppp的边,代表买纸巾每个出点向ttt连流量[0,inf][0,inf][0,inf],边权000的边,代表不洗纸巾outiout_iouti向ini+nin_{i+n}ini+n连流量[0,inf][0,inf][0,inf]边权sss的边,代表这天用完的纸巾去慢洗outiout_iouti原创 2021-03-21 13:50:42 · 243 阅读 · 0 评论 -
P4553 80人环游世界(上下界可行费用流)
LINK无特殊说明费用都是0新建源点sss和汇点ttt,新建虚拟限制节点xunixunixunisss连向xunixunixuni流量[0,m][0,m][0,m]的边,表示可以派出的人不能超过mmmxunixunixuni连向每个点流量[0,inf][0,inf][0,inf]的边,表示可以派出任何人去这个点对于边(x,y,w)(x,y,w)(x,y,w),让x+nx+nx+n连向yyy流量[0,inf][0,inf][0,inf]费用www的边,表示边之间的转移对于每个点xxx,让xxx连向原创 2021-03-20 13:53:13 · 186 阅读 · 0 评论 -
P2053 [SCOI2007]修车(费用提前计算的费用流)
LINK同一时刻有NNN位车主带着他们的爱车来到了汽车维修中心。维修中心共有MMM位技术人员,第iii个技术人员修第jjj量车花的时间是Ti,jT_{i,j}Ti,j。现在需要安排这MMM位技术人员所维修的车及顺序,使得顾客平均等待的时间最小。说明:顾客的等待时间是指从他把车送至维修中心到维修完毕所用的时间。设一个技术人员先后修了u1,u2..uxu_1,u_2..u_xu1,u2..ux个人的车,那么合计等待时间是Tu1+(Tu1+Tu2)+...+(∑i=1xTui)T_{u_1}原创 2021-03-20 11:49:03 · 205 阅读 · 0 评论 -
P4843 清理雪道(有源汇上下界网络最小流)
LINK每条边可以覆盖无限次但至少覆盖一次,这是一个很明显的限制我们可以套用上下界最小流来解决首先新建源点sss和汇点tttsss连向每个点流量[0,inf][0,inf][0,inf]的边,因为飞机可以在任意点投放任意个人每个点连向ttt流量[0,inf][0,inf][0,inf]的不边,这个人可以在任意位置停下来ttt连向sss流量为[0,inf][0,inf][0,inf]的边,使得这两个点满足流量守恒新建虚拟源点ssssss和虚拟汇点tttttt向图中其他点连边,连边方式和无源汇可原创 2021-03-20 11:09:13 · 202 阅读 · 0 评论 -
上下界网络流全家桶(附带loj模板)
注意\color{Red}注意注意无源汇上下界可行流⚪\color{Red}{⚪}⚪问题描述一个有向图,每条边拥有一个流量下界LLL和流量上界RRR是否存在一种方式使得在满足流量守恒的情况下,满足每条边的上下界。因为每条边至少需要LLL的流量,那初始时,直接给每条边输入LLL的流量。但是这样,肯定是不满足流量守恒的。设inxin_xinx表示流入xxx的流量,outiout_iouti表示流出xxx的流量对于一个点inx>outxin_x>out_xinx>outx原创 2021-03-19 21:50:09 · 337 阅读 · 0 评论 -
Magic Slab(最大权闭合图入门)
传送门很明显的最大权闭合子图模型格子(i,j)(i,j)(i,j)的收益依赖于i,ji,ji,j是否被点亮那么把行列拆分为n+mn+mn+m个点每个格子向对应的行和列连边权为infinfinf的边SSS连向格子权值为收益,行列连向TTT权值为代价至于奖励边,SSS连向奖励边的虚拟点,权值为奖励虚拟点连向两个相关的格子,权值为infinfinf跑一边最小割即可。#include <bits/stdc++.h>using namespace std;const int maxn原创 2021-01-19 13:52:50 · 233 阅读 · 0 评论 -
Cat VS Dog HDU - 3829(最小点覆盖)
传送门害,由于每个人喜欢的动物和讨厌的不为同一种动物所以很容易想到二分图,把猫放在左边,狗放在右边…但是这样没办法写,因为有的人关系可以颠倒,可以喜欢猫也可以喜欢狗…正确的做法不是把猫狗看成点,而是把人看成一个点这样喜欢同一种生物的人一定不可能冲突所以喜欢猫的放二分图左边,喜欢狗的放二分图右边这样就可以根据冲突连边,跑最大独立集我傻了,明明很简单…#include <bits/stdc++.h>using namespace std;const int maxn = 4e5原创 2020-11-15 23:30:26 · 216 阅读 · 0 评论 -
CF387D George and Interesting Graph(最大匹配)
非常奈斯的一题中心点非常特殊,而nnn不大,考虑枚举中心点那么去掉中心点后,每个点还需要一个出度和一个入度而对于原图中的边自然是保留越多越好,这样删掉的边就少,加上的边就多发现什么了??最大匹配!!!这样一来,令最大匹配为temptemptemp,图中的边有bianbianbian条,点数为n−1n-1n−1这部分花费(n−1−temp)+(biao−temp)(n-1-temp)+(biao-temp)(n−1−temp)+(biao−temp)再加上中心点需要补上去的边就好了#inclu原创 2020-10-30 20:36:00 · 316 阅读 · 0 评论 -
SPOJ 839 Optimal Marks(经典二进制最小割)
洛谷传送门胡伯涛的论文里的例题。给定一个无向图,有些点有编号,没有编号的点需要你指定最后这张图的权值是∑(u,v)∈Emarku⊕markv\sum\limits_{(u,v)\in E}mark_u\oplus mark_v(u,v)∈E∑marku⊕markv最小化这个权值,输出你构造的编号思路非常巧妙因为异或运算非常难顶,但是异或的话,每一位二进制是独立的所以可以把二进制拆分,现在只考虑最小化第iii位的二进制贡献问题变成了每个点是0或者1,有些点指定了,有些点需要你来加那么如原创 2020-10-29 20:04:23 · 251 阅读 · 0 评论 -
51nod 1757大灾变(拆点二分网络流)
大灾变发现士兵的流动很像网络流但是网络流无法表示时间的流逝所以可以把每个终点拆分为nnn个点,分别表示不同时刻的点这样就可以二分转换为判定性的问题,假设二分的值为midmidmid如果点iii距离洞口xxx有disdisdis米且dis<=middis<=middis<=mid就让iii连向xxx的第disdisdis时刻的那个点然后洞口的每个时刻向终点连边,流量为111,表示一个时刻只能走一个人洞口的每个时刻向下一个时刻连infinfinf边,表示早来的可以等一等去以后的原创 2020-10-17 15:51:08 · 228 阅读 · 0 评论 -
51nod 1392装盒子(点权覆盖好题)
装盒子要求最小权覆盖,而且每条路径只有最后一个点要收费这样不好考虑,那么考虑能装进的最大体积拿总体积减去最大体积就是答案把点iii拆分为iii和i′i'i′源点sss向iii连流量1费用0的边i′i'i′向湖汇点ttt连流量1费用0的边若jjj能包含iii,iii向j′j'j′连一条流量1,费用iii体积的边表示如果iii流向了j′j'j′,代表jjj包含iii如果后续jjj没有流向别人,代表jjj就是终点但是相同大小的盒子需要去重假如i,ji,ji,j完全相同那么存在i−>j原创 2020-10-15 21:04:21 · 260 阅读 · 0 评论 -
HDU3820 Golden Eggs(dinic经典二分图最小割变形)
HDU3820完全没想到…很明显这是个二分图,奇偶染色…但是每个格子有两种选择,金或者银所以拆点,金色点连源点,银色点连汇点但是这样还没有解决选择相邻的点同色减去费用在二分图的概念里就是假如奇点选择了金点,偶点选择了金点,必须有一条边g强行被割掉假如奇点选择了金点,偶点选择了金点,必须有一条边g强行被割掉假如奇点选择了金点,偶点选择了金点,必须有一条边g强行被割掉假如奇点选择了银点,偶点选择了银电,必须有一条边s强行被割掉假如奇点选择了银点,偶点选择了银电,必须有一条边s强行被割掉假如奇点原创 2020-10-09 22:13:18 · 276 阅读 · 0 评论 -
牛客练习赛52 发传单(上下界最小费用最小流)
F.发传单题意wjyyywjyyywjyyy可以给一部分人发传单,有传递代价拿到传单的人可以发给另一些人,有传递代价要求满足花费最少的传单,且传递代价最小假如是个DAGDAGDAG图我们可以做最小路径覆盖但这里不是,所以想到上下界网络最小流(暂时不考虑费用)解出来后,重新建图设置每条边的流量不超过求出的最小流,跑费用流即可但是这样代码太长了而且很难调有种简单的方法\color{Red}有种简单的方法有种简单的方法直接跑上下界最小费用流但是我们把wjyyywjyyywjyyy传递出的传单原创 2020-10-08 13:27:52 · 244 阅读 · 0 评论 -
HDU1853(有向图最小权环覆盖)
HDU1853对于每条边(u,v)(u,v)(u,v)把点xxx拆分为xxx(入点)和x+nx+nx+n(出点)源点sss连向点uuu,费用000v+nv+nv+n连向汇点ttt,费用000u+nu+nu+n连向vvv,费用边(u,v)(u,v)(u,v)的费用所有边流量都是111这样跑最小费用流,若最大流是nnn即可因为所有入点都作为一条边的起点,所有出点都作为一条边的出点就是说每个点都处在环中#include <bits/stdc++.h>using namespac原创 2020-10-08 11:21:27 · 329 阅读 · 0 评论 -
HDU2435 There is a war(最小割优化)
很奇怪的题…很明显可以枚举两个点来加inf边计算最小割就这样勇敢的草了一发,发现tletletle考虑优化,跑一遍最小割会把源点和汇点分成两个集合那么枚举的两个点如果在一个点集,那么原来的割就可以割掉,没有意义这样,只需要枚举不在一个点集的边就可以注意加边后跑最小割,删除边需要更新head[u],并且退流注意加边后跑最小割,删除边需要更新head[u],并且退流注意加边后跑最小割,删除边需要更新head[u],并且退流#include <bits/stdc++.h>using n原创 2020-09-29 23:04:59 · 235 阅读 · 0 评论 -
HDU4332 Candy(经典贪心拆边费用流)
链接传送门2012年多校的一道费用流,令人叹为观止的贪心建图思想首先一块糖果给不同人的收益是不同的,所以考虑费用流而不是最大流然后就不会做了…发现糖果要么贡献价值kkk,要么贡献价值111如果我们让尽量多的糖果贡献价值kkk,是不是意味着最优呢?大概是这样,但也不全是,因为有的人会溢出收益考虑某个人的bib_ibi,如果bi%k==0b_i\%k==0bi%k==0,那么他最多能吃掉bi/kb_i/kbi/k个喜欢的糖果那么这个人向汇点连一条流量bi/k,费用k的边那么这个人向汇点连一原创 2020-09-29 16:36:41 · 246 阅读 · 0 评论 -
HDU4406 GPA(拆边费用流)
还算是经典题目吧~其实就快想出来了,但是突然脑残了一下,很烦首先看到最后得分只和每门课程的pi有关首先看到最后得分只和每门课程的p_i有关首先看到最后得分只和每门课程的pi有关化简pi得式子得到化简p_i得式子得到化简pi得式子得到−3x2+600x−236001600\frac{-3x^2+600x-23600}{1600}1600−3x2+600x−23600打表发现分子是一个单增函数打表发现分子是一个单增函数打表发现分子是一个单增函数即f(x)=−3x2+600x−23600单增即f原创 2020-09-21 20:25:28 · 228 阅读 · 0 评论 -
HDU4411 Arrest(负边权或上下界网络流建图)
牵涉到必须经过每个点至少一次,所以拆点把点iii拆分为iii和i+ni+ni+niii到i+ni+ni+n可以走多次,但至少需要经过一次(代表经过这个点)所以iii到i+ni+ni+n首先连一条流量111,费用−inf-inf−inf的边,这样一定会走至少111次iii再到i+ni+ni+n连流量infinfinf,费用000的边,表示可以经过多次这个点i+ni+ni+n到ttt连流量infinfinf,费用dis[i][0]dis[i][0]dis[i][0]的边,表示可以有多个警察从这个点返回原创 2020-09-20 22:05:35 · 308 阅读 · 0 评论 -
HDU6598多校Harmonious Army(文理分科类最小割)
标准的文理分科模型如果没做过,建议尝试一下这题文理分科#include <bits/stdc++.h>using namespace std;#define int long longconst int maxn=2e5+10;const int inf=1e18;struct edge{ int to,nxt,flow;}d[maxn];int head[maxn],cnt=1;int n,m,s,t,maxflow;void add(int u,int v,int f原创 2020-09-17 20:01:34 · 251 阅读 · 0 评论 -
牛客2019多校第五场maximum clique 1(隐含二分图最大团)
以前还是对最大独立集之类的东西概念混淆不清,搞得我看了很久…要求找出最大团,使得任意两个数二进制至少有2位不同这是个二分图.我们按照二进制1的奇偶性可以分为两个集合我们按照二进制1的奇偶性可以分为两个集合我们按照二进制1的奇偶性可以分为两个集合若同为为奇数(或偶数),不管怎么构造,都至少有2位不同若同为为奇数(或偶数),不管怎么构造,都至少有2位不同若同为为奇数(或偶数),不管怎么构造,都至少有2位不同因为数字互不相同,所以即使1的个数相同,也会有2位不同因为数字互不相同,所以即使1的个数相同,也原创 2020-09-16 23:56:50 · 719 阅读 · 0 评论 -
2020HDU多校 Go Running(最小点覆盖)
链接hhhhhhhhhhhh一眼看出是最小点覆盖,然而傻了,不会建图.把题意抽象一下,就是说平面上一些点,用最少的先覆盖所有点.把题意抽象一下,就是说平面上一些点,用最少的先覆盖所有点.把题意抽象一下,就是说平面上一些点,用最少的先覆盖所有点.当然,斜率只能是1(往东走)或−1(往西走)当然,斜率只能是1(往东走)或-1(往西走)当然,斜率只能是1(往东走)或−1(往西走)但是怎么建图呢?考虑(t,x)可以是(0,x−t)的人向东走过来的考虑(t,x)可以是(0,x-t)的人向东走过来的考虑(t,原创 2020-09-15 15:26:55 · 243 阅读 · 0 评论 -
HDU-3468-Treasure Hunting(最短路转最大流)
挺有意思的一题不难,但是写起来处理不好会比较繁琐我们把所有宝藏记录下来,把所有汇合点记录下来由于每个汇合点去下一个汇合点的路上最多只能拿一个宝藏所有可以对每个汇合点bfsbfsbfs,这样就知道那些保证在相邻汇合点的最短路上那现在问题就转化成每个汇合点到下一个汇合点路上可以选择若干宝藏的一种这不就是裸的二分图最大匹配了么#include <bits/stdc++.h>using namespace std;const int inf=0x3f3f3f3f;const int原创 2020-09-13 22:01:02 · 293 阅读 · 0 评论 -
HDU3338 (建图原理详解)
很经典的题,但是看到还是没思路,太蠢了.注意下面的行列指的是连续空白格子组成的行和列(意思是每行可以分出多个行)注意到每个空白格子上的数字只会贡献给本列上面的数字和本行左边的数字所以可以考虑把每行每列抽象为一个点空白格子连向对应行和对应列,流量是[1,9][1,9][1,9]但是流量最低可以是000,所以我们把流量设置为888,这样[0,8][0,8][0,8]可以映射[1,9][1,9][1,9]但这样有个问题,空白格子流向对应行的流量应该等于对应列的流量所以可以把空白格子放中间这样建图原创 2020-09-12 12:44:55 · 263 阅读 · 0 评论 -
P4142 洞穴遇险(类三分图分类费用流)
读完题发现拐角处一定放在i+ji+ji+j为奇数的地方所以可以想办法转化为3个格子凑成L形状权值的最大值3个格子凑成L形状权值的最大值3个格子凑成L形状权值的最大值(因为要减去最多嘛)然后就有一些性质了当确定某个格子(i,j)(i,j)(i,j)作为拐角放置为了构成LLL形状,还需要覆盖222个格子可以是上左,上右,下左,下右发现这4个格子的i+j都是偶数发现这4个格子的i+j都是偶数发现这4个格子的i+j都是偶数那我们可以根据二分图对i+j的奇偶性染色那我们可以根据二分图对i+j的奇偶性染色原创 2020-09-10 22:22:32 · 260 阅读 · 0 评论 -
loj雅礼集训 2017 Day8」价(最大权闭合子图变形)
说实话真是个神仙题,日常被网络流草推两篇我个人觉得讲的不错的文章详细版本简明版本然后当然我自己也要来一遍啦~一眼看去,像极了最大权闭合子图等等,但是药材是不收费的啊…而且药品的收益有正有负…限制条件是药品数等于药材数先说连边方案没有权值我们就人为加上一个权值下面定义p[i]p[i]p[i]为选择的收益(取反,因为负数的收益是正的)s向药品i连流量p[i]+inf的边s向药品i连流量p[i]+inf的边s向药品i连流量p[i]+inf的边药品i向对应的药材连inf的边药品i向对应原创 2020-09-08 22:18:14 · 271 阅读 · 0 评论