摘要: s向所有单位连流量为人数的边,所有饭桌向t连流量为饭桌容量的边,每个单位向每个饭桌连容量为1的边表示这个饭桌只能坐这个单位的一个人。跑dinic如果小于总人数则无解,否则对于每个单位for与它相连、满流、另一端不是s的点则是最终方案 cpp include include include inclu 阅读全文
posted @ 2018-02-06 22:58 lokiii 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 经典二分图匹配问题。把每个点拆成两个,对于原图中的每一条边(i,j)连接(i,j+n),最小路径覆盖就是点数n 二分图最大匹配。方案直接顺着匹配dsf。。 cpp include include using namespace std; const int N=505,M=120005; int n 阅读全文
posted @ 2018-02-06 22:05 lokiii 阅读(280) 评论(0) 推荐(0) 编辑
摘要: s向所有类别属性连流量为当前类别属性需要的个数的边,所有题目向t连流量为1的边(表示只能选一次),所有属性向含有它的题连容量为1的边。跑一变dinic,结果小于m则无解,否则看每一个类别属性连出去的题目的边是否满流,满流代表这个属性选择这道题 cpp include include include 阅读全文
posted @ 2018-02-06 20:18 lokiii 阅读(255) 评论(0) 推荐(0) 编辑
摘要: ……一道难在读入的题。 最后解决方案直接getline一行然后是把读优拆掉放进函数,虽然很丑但是过了。 然后就是裸的最大权闭合子图了,把仪器当成负权点向t连流量为其价格的边,s向实验连流量为实验报酬的边,实验向所有它所需要的仪器连流量为inf的边表示不可割断。然后跑最大流即可。 关于输出方案,直接看 阅读全文
posted @ 2018-02-06 14:33 lokiii 阅读(121) 评论(0) 推荐(0) 编辑
摘要: …为什么最短路的题会出现在网络流24里?? 因为范围是15所以直接把每个状态作为一个点,向它能转移到的点连有向边即可。可以不用建图(据说建图存不下?),直接枚举m个转移方案。位运算比较麻烦注意不要写错。 阅读全文
posted @ 2018-02-06 11:28 lokiii 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 判无解的方法非常粗暴:快T了还是没有合法方案,就是无解。 然后枚举答案,对于每一天都建一套太空站,s连地球,t连月球,上一天的太空站连向这一天的太空站,流量均为inf。然后对于每个飞船,上一天的停靠站向这一天的停靠站连边,流量为p。每次新增一天都新建一套,然后跑一次dinic加给tot,等tot = 阅读全文
posted @ 2018-02-06 11:25 lokiii 阅读(168) 评论(0) 推荐(0) 编辑