随笔分类 - 图论
摘要:传送门 应该是很显然的费用流模型吧... $S$ 向所有学校连边,流量为 $1$,费用为 $0$(表示每个学校要选一个编号) 学校向范围内的数字连边,流量为 $1$,费用为 $c|m-m'|$(表示学校选择编号的花费) 注意学校向原来的数字连边,流量 $1$,费用 $0$(表示学校可以不改变编号)
阅读全文
摘要:传送门 答案等于总工作价值减去最小失去的价值 考虑构建最小割模型 在 $S$割 的点表示选,在 $T$割 的点表示不选 对于机器(编号从 $n+1$ 到 $n+m$) $n+i$,连边 $(n+i,T,cost)$ 表示选的代价 即如果此边满流表示此机器在 $S$割,表示选了,代价就是 $cost$
阅读全文
摘要:以前只知道最小割就是最大流...网络流背个模板,没了 根本没有深入理解,最近写了一些题才知道自己很 $naive$ 废话不多说,开始正题(假设大家都会网络流的代码,并且知道网络流在做什么) 首先最小割就是最大流(废话) 一条图的最小割中,一定有一些边,它们是满流的(如果不满流就不是最大流了) 不妨把
阅读全文
摘要:传送门 考虑一开始把所有点都选了,再放弃一些点使得选择合法 考虑求出最小的放弃掉的价值 看到棋盘先黑白染色冷静一下 从 $S$ 向所有黑点连一条流量为点权的边,如果满流表示我放弃这个点的价值 从所有白点向所有 $T$ 连边,如果满流说明我放弃这个点的价值 从所有黑点 $x$ 向它四个方向的四个白点
阅读全文
摘要:传送门 显然网络流,网格中每个点向四个方向连流量为 $1$ 的边, 源点向所有羊连流量 $INF$ 的边,狼向 $T$ 连流量 $INF$ 的边 然后最小割就是答案了(应该十分显然吧...)
阅读全文
摘要:传送门 求最小平均等待时间就相当于求最小总等待时间 考虑对于一个技术人员的修车顺序,$k_1,k_2,k_3,...,k_p$ 这 $p$ 辆车的车主的等待时间分别为 $t_{k_1},t_{k_1}+t_{k_2},t_{k_1}+t_{k_2}+t_{k_3},...,t_{k_1}+t_{k_
阅读全文
摘要:传送门 求无法逃离的蜥蜴总数的最小值就是求最多逃离的蜥蜴总数 所以显然考虑最大流,一个流量的路径就相当于一只蜥蜴逃离的路径 发现每个位置有一个最大经过次数,所以把每个位置拆成两个点$x,y$,$x$ 到 $y$ 连流量为最大经过次数的边 从源点向每个蜥蜴的初始位置的 $x$ 连一条流量为 $1$ 的
阅读全文
摘要:传送门 考虑把总区间长度减去最多能减少的区间长度 把所有区间离散化,对每一小段计算贡献 分类讨论一波,对于边界 $i,i+1$ ,设它们之间距离 $d$,$i$ 属于 $x$ 考察队的边界,$i+1$ 属于 $y$ 考察队的边界: $i$ 为左边界,$i+1$ 为左边界,显然如果给 $x$ 钥匙就可
阅读全文
摘要:传送门 考虑前缀异或和 $b[i]$ 如果知道每个 $b[i]$ 就相当于知道所有数 初始知道 $b[0]$,每次操作 $l,r$ 就是求出 $b[l-1]\ xor\ b[r]$ 考虑转化成图论模型,把 $b[i]$ 看成点(包括 $b[0]$),每次操作相当于把两个点 $b[l-1],b[r]$
阅读全文
摘要:传送门 问最长简称最短,考虑二分答案 二分后开始考虑暴力枚举合法缩写 但是正常枚举时可能会重复 所以设 $ch[i][j][k]$ 表示第 $i$ 个人,当前到位置 $j$ 时,下一个字符为 $k+'a'$ 的最前面的位置 这样我们暴力 $dfs$ 时就不会重复枚举缩写了 预处理一波 $ch$ :
阅读全文
摘要:传送门 人在各个太空站流动,所以显然的网络流模型 因为不同时间能走的边不同,所以显然按时间拆点 但是因为不知道要多少时间,所以要枚举时间,动态拆点 每一点向下一个时间的同一点连流量为 $INF$ 的边,表示时间的转移 因为知道时间,所以可以求出每站的下一站,流量显然就是对应太空船的容量 每多一时间就
阅读全文
摘要:传送门 想象一下餐巾的转移,从前一天到后一天,从外面买来,送到其他地方去洗然后过几天回来 发现很像一个流 所以考虑构建网络流模型 建立一个源点 $S$ ,和汇点 $T$ 然后显然我们要按时间拆点,把每天的餐馆拆成早上和晚上,早上送走干净餐巾,晚上得到脏餐巾 每天早上向 $T$ 连一条流量为当天餐巾需
阅读全文
摘要:传送门 经典的最大权闭合子图问题 实验有正的价值,仪器的价值为负 为了实验我们必须选择相应的仪器 所以从 S 连向实验,边权为实验的价值 实验与相应仪器之间连边,边权为 INF 仪器连向 T 边权为仪器的价格 解释: 首先最大权闭合子图就是要求在一个图中求出一个联通子图 该子图没有出边能到达非子图的
阅读全文
摘要:传送门 把用户群和中转站都看成点 用户群权值为正,中转站权值为负 为了获得用户群的权值,我们不得不一起获得中转站负的权值 发现就是裸的最大权闭合子图 那么从用户群连边向中转站,边值INF 从 S 连向用户群,边权为用户群权值 最后从中转站连向 T 边权为中转站权值的绝对值 然后直接最小割 不懂原因的
阅读全文
摘要:传送门 根据小朋友的意愿和他们之间的关系建一个图 如果 A 想睡觉就从 S 连一条边到 A ,反之从 A 连一条边到 T 如果 A,B 是好朋友,则他们之间连双向边(友谊是相互的) 那么对于任意一条从 S 到 T 的只经过两个小朋友的路径,则表示一种冲突 (因为与 S 相连说明 A 要睡觉,但是有朋
阅读全文
摘要:传送门 考虑如果我们选了一条边,那么边连接的两个端点也一定要选 我们选边得到正的价值,选点得到负的价值 发现就是求一个最大权闭合子图 把边也看成点,S向它连边,边权为它的价值 然后向 原边连接的两点 连权值 INF 的边 最后把原图的点连向 T ,边权为点值(正数) 然后跑最小割 解释: 因为中间的
阅读全文
摘要:传送门 直接搞很复杂,考虑转化问题 题目只要求第1个人最多能获得的物品数量 所以如果一种物品拥有多个和一个是没区别的 那么考虑每种物品对第1个人怎样贡献 显然要经过一些交换最终到达第一个人那里 发现很像一个流,那么考虑建立网络流模型 建一个源点向每个点连一条最大流量为1的边,相当于初始每个点有1个物
阅读全文
摘要:传送门 显然每次走到一个联通块肯定要把整个联通块的草场都走一遍,考虑缩点 然后直接建分层图跑最长路就好了 (为了方便,以下的强连通分量均称为点) 但是有一个小问题,如果反着走可能走到以前走过的点,怎么判断(因为每个点只有一次贡献) 其实根本不用判断,因为如果从一号点出发,走出去后要走回来一定要逆行一
阅读全文
摘要:传送门 直接爆力BFS有80分... 讲一下BFS吧 可以发现在一个局面下我们要知道的只有空格的位置和指定棋子的位置 因为其他的不是不可移动就是普通棋子 然后以空格的位置BFS,一个棋子走到空格其实就相当于空格走到棋子并把棋子挤到原本空格的位置 我们就BFS让空格瞎跑看看跑几步可以把指定棋子带到指定
阅读全文
摘要:传送门 经典题 如果把每个环都找一遍绝对时间爆炸 所以我们要换一种思路 看到求最大最小首先考虑二分答案 如果平均权值最小的回路小于我们二分的答案mid会发生什么呢 如果我们把回路的长度减少 mid*回路边数,回路的长度就会变成负数 而把回路减少 mid*边数 其实相当于把回路上的每条边都减少mid
阅读全文