随笔分类 - 图论--网络流
摘要:n<=50 * m<=50的地图,每块地‘*’表示一定要被填上,‘.’表示一定不能填上,用1*l或l*1,l自定,的板填起来,求最少几块板。 如果是做过那种“一炮打一列或一行,求几炮把地图上的点打掉”的二分图经典题,那就可以类比了。不过这里的行和列是基于联通块的,所以预处理出行联通块和列联通块并编号
阅读全文
摘要:n<=500 *n的格子,给m<=10000个格子有人,一炮可以清掉一行或一列的人(莫名的爽!)求最少几炮干掉所有人。 经典二分图模型!行成点,列成点,一个点就连接一行一列,表示这一行或这一列必选其一! 不喜欢匈牙利!跑网络流! 1 #include<stdio.h> 2 #include<stri
阅读全文
摘要:n<=3000个点m<=20000条无向边的图,有p<=n个出发点,每个出发点都不可拆,现拆一些点使每个出发点都不能到达点1,求最小点数。 简单的最小割。每个点拆成两个x和y,无向边A--B即Ay->Bx,By->Ax,每个点拆成的x和y再连边容量1,然后建超级源向p个点连边,最大流,没了。 错误。
阅读全文
摘要:n个村庄m条带权路,权值为花费,村庄可以造东西卖东西,造完东西可以换地方卖,给出每个村庄造东西花费a和最多个数b、卖东西价值c和最多个数d,求最大收益。 裸的费用流。然而还WA了一发。很好。 建源向每个村庄连边(b,a),(b,a)表示容量b费用a,每个村庄向汇点连边(d,-c),村庄间有路就互相连
阅读全文
摘要:n<=500,n*n网格给m<=10000个点,每次发射子弹打掉一行或一列的点,求最少几发子弹。 网络流经典模型,每行每列看成点,一个(x,y)表示,表示第x行的点和表示第y列的点必有一个要选,连边。接下来二分图匹配或最大流即可。 1 #include<cstdio> 2 #include<cstr
阅读全文
摘要:n头牛,第i头要SPF(某个参数)在Lowi到Highi的药,药m种每种SPF为Vi,数量为Numi,求最多能满足几头牛。 方法一:什么都看不出来,只知道第i头牛能和一些药匹配,于是网络流,牛向药连容量1的边,起点向牛容量1,药向终点容量为药数量,最大流。 1 #include<cstdio> 2
阅读全文

浙公网安备 33010602011771号