![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络流
想出成果的acmer
当你越来越漂亮的时候,自然有人关注你,当你越来越有能力时,自然会有人看得起你,改变自己,你才有自信,梦想会慢慢的实现,要做好你自己,懒惰可以毁掉一个人,勤奋可以激发一个人,不要等到夕阳西下的时候才对自己说如果当初…如果…我就会怎么样,之类的话,都已经晚了,我只想告诉你一句话:要做一个连自己都羡慕的人!
展开
-
2237. 猪 (网络流实战)
题目 题意: 1.顾客到达养猪场,将所有他有钥匙的猪舍的大门全部打开,米尔克从所有未上锁的猪舍中挑选一定数量的猪卖给该顾客。 2.如果米尔克愿意,他还可以给未上锁的猪舍里剩下的猪重新分配位置。 3.在每个顾客到达之前,会将上一个顾客打开的猪舍全部关闭。每个猪舍中都可以放置无限数量的猪。 请你编写一个程序,计算他当天可以出售的生猪的最大数量。 思路: 如果没有猪舍重新分配猪的限制,很好建模,直接源点向猪舍连边,猪舍向顾客连边,顾客向汇点连边,求最大流即可。但是现在可以重新分配,就比较难。可以按照天数来建点,也原创 2022-12-05 10:37:46 · 101 阅读 · 0 评论 -
2278. 企鹅游行 (网络流拆点)
题目 题意: 略。 思路: 这个拆点好想,没看题解就想出来了。每个冰块作为一个点,企鹅乱跳作为不同点之间的流量,然后每个冰块的跳跃次数的用拆点的方式限制住。之后枚举汇点得到答案,记得每次枚举之前把网络重置,每条正向边的边权应该是现有边权+反向边的边权,还能流多少+已经流了多少=总共能流多少=容量,反向边的边权清0,变成没流的状态。 代码:原创 2022-12-04 21:51:45 · 99 阅读 · 0 评论 -
2180. 最长递增子序列问题 (网络流拆点)
题目 题意: 给定正整数序列 x1,⋯,xn。 1.计算其最长非递减子序列的长度 s。 2.计算从给定的序列中最多可取出多少个长度为 s 的非递减子序列。(给定序列中的每个元素最多只能被取出使用一次) 3.如果允许在取出的序列中多次使用 x1 和 xn,则从给定序列中最多可取出多少个长度为 s 的非递减子序列。 思路: n原创 2022-12-04 21:45:27 · 118 阅读 · 0 评论 -
2187. 星际转移问题 (利用分层图思想建图)
题目 题意: 略。 思路: 首先用并查集或者dfs的方式判断起点和终点是否连通。之后呢,感觉这个题比较难建图。一个比较好的想法是根据天来建图,每一天建立所有点,不同天同一个点之间建立INF的边(停在某个点的人可以再留一天),再根据每趟车建立某一天的点和下一天的点之间的连边。之后天数从1开始增加即可,因为网络流是可扩展的,新增加了某一天的边之后再跑网络流并不慢。除此之外,建立超级源点和超级汇点,超级源点向第0天的起点连一条流量为k的边;所有天的终点向超级汇点连一条流量为INF的边。 代码:原创 2022-12-03 18:53:07 · 163 阅读 · 0 评论 -
2240. 餐饮 (网络流之拆点)
网络流,食物向牛建边,牛向饮料建边,但是发现不对,因为没有约束牛的流量是一,可能某个牛多次被分配食物,这样的话就wa。可以把牛拆成两个点,分别负责入边和出边,之间用边权为1的点连接,限制每头牛最多被分配一套食物和饮料。给定n头牛,每头牛喜欢mi种食物,ki种饮料。每个牛只需要一个食物和一个饮料,每个食物和饮料被分配给一头牛之后不能再分配给别的牛。让尽可能多的牛吃到喜欢的食物和饮料,输出数量。原创 2022-12-01 22:47:02 · 118 阅读 · 0 评论 -
网络流之关键边
所谓的关键边,即增大这条边的边权之后能增大最大流的流量。给定有向图,求出图中的所有关键边。原创 2022-12-01 16:35:42 · 206 阅读 · 0 评论 -
最大流之上下界可行流
一个直观的想法是求超级源点到超级汇点的最大流,之后再求原图中源点到汇点的最大流(因为求完第一个最大流之后可能还存在原图中源点到汇点的增广路)。因为求出超级源点到超级汇点的最大流(满流)之后,他们对应的边就算废了,因为都是满流,相当于没有。这个时候把正无穷的边删去,求得的原图中源点到原图中汇点的最大流满足可行流的定义(流量限制和容量限制)。这时我们发现只要求出新图中的最大流,如果他是满流的,就对应了原图中的一个可行流。先求出满流,保证是个可行流,然后再求原图中汇点到源点的最大流,反着流最大即正着流最小。原创 2022-12-01 16:31:37 · 551 阅读 · 0 评论