摘要: 题目链接: "骑士共存问题" 这道题其实代表了一类问题——在二维坐标平面上的网络流问题 我们首先要用一个数来代表一个特定的点 然后建边还是很显然的——根据攻击关系建边 但是这类问题还要注意一点——减少重边 一般我们会以奇数(或偶数)建边,即源点$s$连向所有用奇数表示的点,奇数点又向偶数点连边,偶数 阅读全文
posted @ 2018-12-26 23:56 EncodeTalker 阅读(108) 评论(0) 推荐(1) 编辑
摘要: 题目链接: "航空路线问题" 由题目中的“每一个城市最多经过一次”可知需要拆点 在根据所求经过城市数最多将城市拆成的边的容量设为1,费用设为1 同时以$n$为汇点,源点到1和1中的两点的容量均设为2 再将原图中的边的容量设为$INF$,费用为0 跑最大费用最大流 输出方案的话,从1开始dfs出两条路 阅读全文
posted @ 2018-12-26 23:39 EncodeTalker 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "软件补丁问题" 这一题还是能看出是网络流的,但是状压+spfa更为方便(因为就算硬上网络流的话流量基本上都是1) 直接将题目中所给的四种状态状态压缩,即一开始的状态为全1(全部都是bug),目标状态是0 注意位运算的优先级 c++ include include include inc 阅读全文
posted @ 2018-12-26 23:31 EncodeTalker 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "飞行员配对方案问题" 很多人把这题当做二分图匹配的模板做,匈牙利的时间复杂度为$O(nm)$ 但是如果用dinic去做时间就会是$O(\sqrt nm)$ 建立超级源点$s$和$t$,直接按照输入连边,源点和汇点分别连向一个点集即可 c++ include include includ 阅读全文
posted @ 2018-12-26 23:27 EncodeTalker 阅读(94) 评论(0) 推荐(0) 编辑