网络流建模汇总

•前言

最近在看 Edelweiss 的网络流建模汇总

来学习网络流的建模技巧

毕竟网络流的题难点就在于如何建图,其余大部分就是套路了

于是也写下自己的想法和思路

(虽然一直在借鉴大佬思路)

•最大流

  •POJ 1149  PIGS

【题目大意】

有 M 个猪圈,每个猪圈里初始时有若干头猪pig[i]。一开始所有猪圈都是关闭的。依 次来了 N 个顾客,每个顾客分别会打开指定的几个猪圈,从中买若干头猪。每 个顾客分别都有他能够买的数量的上限。每个顾客走后,他打开的那些猪圈中的 猪,都可以被任意地调换到其它开着的猪圈里,然后所有猪圈重新关上。问总共 最多能卖出多少头猪。(1 <= N <= 100, 1 <= M <= 1000)

【思路】

设一个s点为源点,一个t点为汇点

每来一个顾客$m+i$(顾客从m+1开始编号),如果他所拥有钥匙的猪圈还未被打开过,那连一条源点和他 流量为此猪圈的猪的数量$(s,i,pig[i])$的边

如果他所拥有钥匙的猪圈$index$被打开过,那连一条前一个打开的人和他 流量为INF的边$(vis[index],i,INF)$

每个顾客与汇点连一条流量为此顾客购买力的边$(m+i,t,buy)$

其实就是把可以调换的猪圈混合在了一起,s-t流和调换猪对应了起来

【代码】

POJ 1149 Pigs

 

•POJ 3281  Dining

【题目大意】

有 F 种食物和 D 种饮料,每种食物或饮料只能供一头牛享用,且每头牛只享用一 种食物和一种饮料。现在有 N 头牛,每头牛都有自己喜欢的食物种类列表和饮 料种类列表,问最多能使几头牛同时享用到自己喜欢的食物和饮料。( 1 <= F <= 100, 1 <= D <= 100, 1 <= N <= 100)

【思路】

 

 

 

猜你喜欢

转载自www.cnblogs.com/MMMinoz/p/11615033.html