网络流
D_Bamboo_
我不懒,只是不知道填什么
展开
-
牛客练习赛65 E 网络流 点权改变的处理方法
题目链接题意n点m条边的无向图,每个点的点权是ai,没经过一次点,点权增加bi,即第k次经过i点权值为ai + (k - 1) * bi,现给出q个xi和q个yi,每次从中选出一组xi,yi,统计从xi到yi的代价和(代价为从xi到yi经过的所有点的点权和),每个点只能选一次,q次后(也就是全选完),求最小代价。思路考虑最小费用最大流。重点解决几个问题:①点权改边权。拆点,一个点拆成一个入点和一个出点,点权就改为了从入点到出点的边权。②每经过一次点,权值增加。在网络流里,可以用拆点,入点和出点原创 2020-06-25 11:21:07 · 216 阅读 · 0 评论 -
#6227. 「网络流 24 题」最长 k 可重线段集问题
题目链接题意x0y平面上n条开线段,求一个线段子集,使得它的线段长度和最长,且对于每条垂直于x轴的线段都不超过k条线段与之相交。思路类似最长k可重区间集问题,因为只对x轴上的点有限制,一样的,离散化后建边,跑最大费用最大流,需要注意的是这里是开线段,有个神奇的处理就是把l改为l * 2+1,r改为r * 2。先对x离散化,处理出费用,也就是线段的长度,对于每个相邻的点连上容量为INF,费用...原创 2020-01-30 15:46:39 · 186 阅读 · 0 评论 -
#6224. 「网络流 24 题」深海机器人问题 收益记一次可走多次
题目链接题意P*Q的网格中,给出每条边的收益,若干个机器人的起始位置和目的地。机器人只能往东或北走,每条边可以走多次,但只能算一次收益,求最优机器人移动方案下的最大收益。思路有机器人数量,边的收益,这种问题显然优先考虑最大费用最大流。一条边的收益只能记一次,连一条容量为1费用为权值的边;然后每条边收益只记一次,但多个机器人可以走同一条路,所以对于每条边,加一条容量为INF,费用为0的边。建...原创 2020-01-29 17:44:25 · 203 阅读 · 0 评论 -
#6122. 「网络流 24 题」航空路线问题 输出路径
题目链接题意一张航空图,从西向东,1-n个城市,城市之间有若干条航线,航线可以往返,求从1到n再从n到1最多经过多少个不同的城市,1和n可以经过两次,其他城市都只能经过一次。思路经过次数,显然要想到拆点和流量控制,将每个城市点拆成入点和出点i和i+n,1与1+n之间的容量是2,费用是0,n与n+n之间的容量是2,费用是0,其他的入点与出点之间的容量是1,费用是0,这样就限制了1和n可以经过...原创 2020-01-28 17:29:51 · 209 阅读 · 0 评论 -
#6121. 「网络流 24 题」孤岛营救问题 迷宫 分层图
题目链接题意一个有n*m个方格的迷宫,相邻的方格之间可能是墙,也可能是连通的,也可能是门,门有多种类型,需要对应类型的钥匙才可以通过,某些方格里存放着钥匙,问从左上角(1,1)到(n,m)最短的时间。思路分层图,以携带的钥匙为层数,用二进制法存,按题意建图后跑spfa。#include <bits/stdc++.h>using namespace std;const in...原创 2020-01-28 15:00:56 · 265 阅读 · 0 评论 -
#6014. 「网络流 24 题」最长 k 可重区间集
题目链接题意给n个区间的集合S,求一个区间集合A属于S,且集合A的每个区间的长度和最大,每个点最多可以选k次。思路首先每个点可以重复k次,可以用流量来限制,用最大费用最大流来做。将所有区间离散化,源点在最左边,汇点在最右边,每一个点都向右边相邻的点连一条容量为INF,费用为0的边,对于每个区间,左端点到右端点连一条容量为1费用为r-l的边,容量为1是因为一个区间只能取一次。然后跑最大费用...原创 2020-01-27 17:20:23 · 154 阅读 · 0 评论 -
#6010. 「网络流 24 题」数字梯形 最大费用最大流 建图
题目链接题意分别求三个规则满足条件的所有路径最大和。思路网络流问题最重要的是建图问题。1.路径互不相交,也就是一个数字只能用一次,那就是拆点了,每个点拆分为入点和出点,入点和出点之间连一条容量为1费用为权值的边;建立一个源点和一个汇点,源点与第一行的入点相连,容量为1费用为0,最后一行的出点与汇点相连,容量为1费用为0,除最后一行外,每个点的出点向它的正下方和右下方的入点连一条容量为1...原创 2020-01-27 11:56:03 · 220 阅读 · 0 评论 -
P1231 教辅的组成——网络流为什么要拆点
洛谷P1231参考博客大佬Siyuan题意有n1本书,n2本练习册,n3本答案。给出m1个书和练习册的联系,m2个书和答案的联系,一本书一本练习册一本答案为一册,问最多可以组成多少册。思路如果只有两样东西就是典型的最大二分匹配问题,但这里有三种,所以匈牙利算法做不了,可以用最大流。建图方法是:源点->练习册->书(拆点)->答案->汇点。拆点很重要,下面是一个样例...原创 2020-01-21 19:19:08 · 314 阅读 · 0 评论 -
#6005. 「网络流 24 题」最长递增子序列
#6005题意给定正整数序列x1 , … , xn 。(1)计算其最长递增子序列的长度s。(2)计算从给定的序列中最多可取出多少个长度为s的递增子序列。(每个数只能取一次)(3)如果允许在取出的序列中多次使用x1和xn,则从给定序列中最多可取出多少个长度为s的递增子序列。思路第一问:n^2的dp搞定,处理出dp数组,dp[i]表示下标为i的数为结尾的最长不下降子序列的长度是多少。第...原创 2020-01-20 15:09:05 · 315 阅读 · 1 评论