网络瘤 24 题 做题记录
做(shui)完了网络瘤 24 题,来总结一下
本文中删去了机器人一题,用 志愿者招募 代替。
网络瘤的重点在于建图时的思路,建出的图已经不重要了。
模板类
分别是最大流,最小费用流的模板题,无建模难度。
我跑最大流和最小费用流用的是预流推进和原始对偶。
Upd: 现在我学废了更快的费用流:网络单纯形
二分图匹配
二分图匹配模板题。
考虑用边描述配对限制,一个人最多与另一个人配对,如果流量代表配对则流量限制应为 \(1\)。
对每个飞行员建一个点,建源 \(S\),汇 \(T\),\(S\) 连英国飞行员,\(T\) 连外籍飞行员,每有一个配对关系就在两飞行员的点间连边,边权均为 \(1\),跑最大流,两飞行员间若边有流量则他们配对。
建模想法与飞行员一题相似。
对每个单位和桌子建点,单位连源 \(S\),桌子连汇 \(T\),边权为单位的人数/桌子的人数,单位和桌子间连边,边权为 \(1\),代表这个单位只能去 \(1\) 个人到某个桌子,跑最大流即可,输出类似上题。
考虑题数限制。题数为刚好 \(m\) 道,可以用流量代表题数,边的流量限制题数不超过 \(m\),最大流要求题数不小于 \(m\),因此试卷向汇连边,流量限制为 \(m\)。
又由于每类试题数相加刚好就是 \(m\),所以可以直接把试卷当汇。
对于每道题的限制,由源向题连边,权为 \(1\) 代表限制。
总结:源连题权为 \(1\),题连类型权为 \(1\),类型连汇权为要选的该类型题数,跑最大流。
对人和工作建点,人连源 \(S\),工作连汇 \(T\),边权为 \(1\) 代表每个人只能有一份工作,费用为 \(0\).
人 \(i\) 和工作 \(j\) 间连边,边权为 \(1\),费用为 \(-c_{i,j}\),跑最小费用流。
最短路(非网络流解法)
这类题都要求最短时间
每个错误是否有状压为一个 int
,不同的状态间连边对应补丁(应用补丁后状态发生变化)长度对应补丁的时间,跑最短路。
需要注意的是,由于状态数过多,不必真的连边,每次转移时枚举补丁即可。
将坐标和有无钥匙塞到一个 std::tuple
里,每次状态变化依赖于坐标和有无钥匙,跑最短路。
由于边权均为 \(1\),也可 BFS.
todo
注:AFO 了,所以咕了。
餐巾计划问题
汽车加油行驶问题
最小路径覆盖问题
太空飞行计划问题
航空路线问题
魔术球问题
最长不下降子序列问题
星际转移问题
方格取数问题
数字梯形问题
深海机器人问题
最长k可重线段集问题
骑士共存问题
火星探险问题
志愿者招募