上一页 1 2 3 4 5 6 7 8 ··· 12 下一页
摘要: "传送门" 某个方格如果选了,那么其周边的四个方格都不能选,有点二分图染色的味道。 考虑建立一个二分图。源点向$x+y$是奇数的连边,是偶数的向汇点连边。 然后根据最大和 = 全局和 舍弃和 = 全局和 最大流,求解 可以理解为在这个二分图中存在一个简单割,有一些点就被舍弃掉了,剩下的点就是我们要需 阅读全文
posted @ 2019-02-02 11:19 Neworld1111 阅读(127) 评论(0) 推荐(0)
摘要: "传送门" 一道最大权闭合子图的题目。直接建图跑dinic就行了,答案为正权点 最大流。 那剩下的问题就是如果知道哪些点被选进最大权闭合子图。 我们知道一个简单割对应了一个闭合子图,当这个简单割是最小割,即最大流,其与$s$相关的点即为闭合子图。 阅读全文
posted @ 2019-02-01 20:33 Neworld1111 阅读(172) 评论(0) 推荐(0)
摘要: 最大权闭合子图 对于最大权闭合子图的理论学习并且补充一部分网络流的笔记 有向图中若干个点组成的一个集合$V$,集合$V$的所有出边所连的点也都属于$V$,这些点构成的图即为闭合子图 点有点权,最大权闭合子图即为权值和最大的闭合子图 Solution 建图 建立超级源点$s,t$ $s$向所有 点权为 阅读全文
posted @ 2019-02-01 00:01 Neworld1111 阅读(250) 评论(0) 推荐(0)
摘要: 欧拉路径模板,但是细节有点多…… 存在欧拉路径的条件: 图连通 : 使用并查集维护 只有两个点的度为奇数,或者没有一个点 阅读全文
posted @ 2019-01-29 00:07 Neworld1111 阅读(138) 评论(0) 推荐(0)
摘要: "传送门" 这应该是比裸的一个网络流/二分图匹配了。 直接跑一遍Dinic求出最大流。再依次遍历所有二分图上的边,如果剩余流量是0,则说明两者相互匹配,作为一组输出。 cpp include include include include define MAXN 205 define MAXM 20 阅读全文
posted @ 2019-01-05 18:43 Neworld1111 阅读(135) 评论(0) 推荐(0)
摘要: 建立一个超级源点和超级汇点,点与点之间的容量均为1,因为一个点只能匹配一个点,源点向所有左边的点连边,汇点向右边的点连边。最后网络的最大流即为最大匹配。 cpp include include include define MAXN 2005 struct queue { int q[MAXN],h 阅读全文
posted @ 2018-12-29 20:07 Neworld1111 阅读(327) 评论(0) 推荐(0)
摘要: 网络最大流 DInic cpp include include include define MAXN 10005 define MAXM 100005 define INF 2147483647 struct queue { int q[MAXN]; int head,tail; queue() 阅读全文
posted @ 2018-12-23 13:26 Neworld1111 阅读(128) 评论(0) 推荐(0)
摘要: "传送门" 看到这题觉得是平衡树,因为有查找第k大和插入删除操作。 但是我不会平衡树啊……所以拿树状数组写了一个伪平衡树。 对于插入操作,直接插,但是要减掉一个rec值。这个rec是什么意思等下说。 对于删除操作,直接删就行了。 对于A,我们肯定不行把所有数字都加一遍,于是利用rec,使rec这个变 阅读全文
posted @ 2018-12-21 13:31 Neworld1111 阅读(166) 评论(0) 推荐(0)
摘要: "传送门" 细节题…… 首先离散化。 然后用线段树维护最大值 因为左端点和右端点的存在性,要做一系列的讨论。 阅读全文
posted @ 2018-12-12 12:34 Neworld1111 阅读(177) 评论(0) 推荐(0)
摘要: "传送门" 最初用线段树写,莫名其妙挂掉了…… 于是开始单调栈: 如果后来的数大于前面的数,那么前面的数一定不会作为答案,出栈。 否则直接插入即可,并记录编号。 那么查询操作,只需要二分查找即可。 cpp include include include define MAXN 200005 stru 阅读全文
posted @ 2018-12-07 23:12 Neworld1111 阅读(158) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 ··· 12 下一页