随笔分类 -  图论---网络流

摘要:传送门 "BZOJ" <! more Solution 显然这是一个最大权闭合子图的问题,所以你把图建出来跑网络流就是$50pts$. 接着你旋转坐标系然后把这个转换成为一个贪心替换网络流的问题,然后就是一个$set$的事了. 代码实现 阅读全文
posted @ 2019-05-20 17:39 QwQGJH 阅读(157) 评论(0) 推荐(0) 编辑
摘要:网络流总结 是时候来一份不完美的网络流总结了! $\texttt{HNOI2019 Must be Win}$ emmm,又到了一年一度的总结时间了.$Tham$要我们搞自己的计划,我就先把网络流搞完了? 大致写一下总结供复习吧. 最大流 这个要是不会就退组吧. emmm,建议Dinic(拓展性较大 阅读全文
posted @ 2019-03-24 22:41 QwQGJH 阅读(175) 评论(2) 推荐(0) 编辑
摘要:题面 "传送门" Solution 看到什么最大值最小肯定二分啊。 check直接跑一个二分图匹配就好了。 orz ztl!!! 代码实现 阅读全文
posted @ 2019-03-20 22:25 QwQGJH 阅读(121) 评论(0) 推荐(0) 编辑
摘要:传送门 "洛谷" Solution 这是一道神仙题! 考虑这个东西是个啥。 emmm,如果两个点要到达,一定不能经过比他们大的。 所以Floyd搞定两点距离然后费用流跑一遍就是答案了! 代码实现 cpp / mail: mleautomaton@foxmail.com author: MLEAuto 阅读全文
posted @ 2019-03-19 21:08 QwQGJH 阅读(128) 评论(0) 推荐(0) 编辑
摘要:传送门 "洛谷" Solution 考虑和happiness一个套路,新建一个点然后连边就好了。 代码实现 阅读全文
posted @ 2019-03-18 22:31 QwQGJH 阅读(113) 评论(2) 推荐(0) 编辑
摘要:传送门 "洛谷" Solution 直接跑最小割板子就好了。 代码实现 cpp include include include include include include include include include using namespace std; define ll long lo 阅读全文
posted @ 2019-03-18 22:29 QwQGJH 阅读(156) 评论(0) 推荐(0) 编辑
摘要:传送门 "洛谷" Solution 比较巧妙啊! 考虑这个只有同意和不统一两种,所以直接令$s$表示选,$t$表示不选,然后在朋友直接建双向边就好了。 代码实现 cpp include using namespace std; const int N=500010,Inf=1e9+10; int f 阅读全文
posted @ 2019-03-18 22:27 QwQGJH 阅读(206) 评论(0) 推荐(0) 编辑
摘要:传送门 "洛谷" Solution 考虑把每一个修车工人拆成$n$个点,那么考虑令$id(i,j)$为第$i$个工人倒数第$j$次修车。 然后就可以直接跑费用流了!!! 代码实现 cpp / mail: mleautomaton@foxmail.com author: MLEAutoMaton Th 阅读全文
posted @ 2019-03-18 15:21 QwQGJH 阅读(144) 评论(0) 推荐(0) 编辑
摘要:大家可以先看这道题目再做! "SCOI2007修车" 传送门 "洛谷" Solution 就和上面那道题目一样的套路,但是发现你会获得60~80分的好成绩!!! 考虑优化,因为是SPFA,所以每一次只会走最短路,做完之后发现。。。 欸,好像每一次会搞掉一条边,那么我们动态加入点就好了。 代码实现 c 阅读全文
posted @ 2019-03-18 15:19 QwQGJH 阅读(130) 评论(0) 推荐(0) 编辑
摘要:传送门 "洛谷" Solution 大致思想同 "这个——洛谷1231" 代码实现 cpp include using namespace std; const int N=500010,Inf=1e9+10; int front[N],cnt,s,t,n; struct node { int to 阅读全文
posted @ 2019-03-17 23:26 QwQGJH 阅读(138) 评论(0) 推荐(0) 编辑
摘要:传送门 "洛谷" Solution 这是一个比较实用的套路,很多题目都有用,而且这个套路难以口胡出来。 考虑把每一个附加贡献重新建一个点,然后向必需的点连边,流量为val。 然后直接种植的从源点向这个点连,流量为val。 最后跑一个最小割就可以了。 代码实现 cpp include using na 阅读全文
posted @ 2019-03-17 23:25 QwQGJH 阅读(152) 评论(0) 推荐(0) 编辑
摘要:传送门 "洛谷" Solution emmm,直接对于每一个点拆点就好了。 然后边连Inf,点连1,跑最小割就是答案。 代码实现 cpp include using namespace std; const int N=100010,Inf=1e9+10; int front[N],cnt,s,t, 阅读全文
posted @ 2019-03-17 23:22 QwQGJH 阅读(141) 评论(0) 推荐(0) 编辑
摘要:传送门 "洛谷" Solution 考虑一本书最多用一次,所以拆点。 其他的答案、练习册与书本的限制直接连1的边就好了。 最后跑出来的最大流就是答案。 代码实现 cpp include using namespace std; const int N=100010,Inf=1e9+10; int f 阅读全文
posted @ 2019-03-17 23:20 QwQGJH 阅读(192) 评论(0) 推荐(0) 编辑
摘要:"pdf文档看这里" 最后一题还是咕了. 阅读全文
posted @ 2019-03-14 17:29 QwQGJH 阅读(107) 评论(0) 推荐(0) 编辑
摘要:前言 摆王兴致冲冲地跑到我们机房来对我说跟你讲一个黑科技。。。 Dinic的神奇优化 Dinic优化 我们发现如果Dinic不建反向边会跑的飞起(当然Wa是必然的) 所以考虑在加反向边的基础上优化. 首先我们记录网络中最大的一个流量,设它为Min,然后: 1. 把所有小于Min的边都加入网络中 2. 阅读全文
posted @ 2019-01-27 21:07 QwQGJH 阅读(247) 评论(0) 推荐(0) 编辑
摘要:有很浓厚的熟悉感?餐巾计划问题? 不就是多了几个医院,相当于快洗部和慢洗部开了分店. 考虑建图: 如果把每一天拆成两个点,一个表示需求,另一个表示拥有的话. 显然就是一个两边的图,考虑如果我现在有人,但是可以不用,显然可以向后面一天传递. 如果我死了人,要救活,显然是需求向拥有连边. 然后就差不多了 阅读全文
posted @ 2019-01-22 12:01 QwQGJH 阅读(160) 评论(0) 推荐(0) 编辑
摘要:Solution 考虑一下这个东西的模型转换: $\frac{\sum_{i=1}^n{a_i}}{\sum_{i=1}^n{b_i}}$ 然后转换一下发现显然是01分数规划。 $\sum_{i=1}^n{b_i} mid\leq \sum_{i=1}^n{a_i}$ 然后再移项: $0 \leq 阅读全文
posted @ 2019-01-22 09:35 QwQGJH 阅读(151) 评论(0) 推荐(0) 编辑
摘要:前言 这一个Task被神仙们吊着打。 Solution 考虑对于每一个(i,j)显然(i,j 1)和(i+1,j)都是要选的,然后连边。 再一看,最大权闭合子图? ~~我去,FAQ~~ 直接跑网络流最小割。。。 代码实现 阅读全文
posted @ 2019-01-14 16:05 QwQGJH 阅读(140) 评论(0) 推荐(0) 编辑
摘要:前言 为什么他们能够切的那么快啊。 Solution 虽然我不会怎么区分最大流和最小费用最大流,但是最大流可以看成最小割,这样子就好区分一些。 考虑这个东西相当于是二分图求一个最小割,直接Dinic套上去就好了。 阅读全文
posted @ 2019-01-13 15:54 QwQGJH 阅读(177) 评论(0) 推荐(0) 编辑
摘要:前言 网络流24题怎么这么难做啊。 Solution 考虑这是一个二分图,按照给出的图发现黄色不能攻击黄色,红色不能攻击红色。 然后就是一个裸的二分图求最小割,直接跑Dinic就好了,无脑实现。 cpp include include include include include include 阅读全文
posted @ 2019-01-13 14:58 QwQGJH 阅读(199) 评论(0) 推荐(0) 编辑