随笔分类 - 图论--网络流
摘要:https://vjudge.net/problem/POJ-3155 最大密度子图模板,在求max(|E|-g|V|)采用了Maxflow(n,n+m)的建图方法。 精度上,要求密度的精度高于最小割的精度。 1 #include<cstdio> 2 #include<cstring> 3 #inc
阅读全文
摘要:https://www.luogu.com.cn/problem/P4174 见https://wenku.baidu.com/view/87ecda38376baf1ffc4fad25.html第24-28页,有Maxflow(n,n+m)版的模型。 1 #include<cstdio> 2 #i
阅读全文
摘要:https://vjudge.net/problem/SPOJ-OPTM 每位分别考虑后,相当于给所有点分两类,不同类之间的边会产生花费。即求最小割,源点向所有已知的这位为0的点连无穷边,所有已知的这位为1的点向汇点连无穷边。为了使总和尽量小,跑完最小割后,从汇点开始dfs找出残留网络种能到达汇点的
阅读全文
摘要:https://zoj.pintia.cn/problem-sets/91827364500/problems/91827366175 分数规划+最小割。 1 #include<cstdio> 2 #include<cstring> 3 #include<cstdlib> 4 #include<al
阅读全文
摘要:n \leq 40个人玩m \leq 10台游戏机,每台游戏机一秒内只能一人玩,每人一秒内只能玩一台。每台游戏机有个价格,在规定总价格内可以把一部分游戏机复制一次,每台只能复制一次。给每个人对在每台游戏机上的需求时间,求一种方案使得所有玩游戏结束的时间尽量早。每个人每台游戏需求时间$\leq
阅读全文
摘要:n \leq 2000个东西要搬走,两个人分别能搬a和b件东西,给两个人搬走每种东西的概率,问最优决策下期望搬走多少东西。 一个人搬贡献:p_i,另一个人搬贡献:q_i,两人一起搬:p_i+q_i-p_iq_i。 s->两个人:流量分别a,b,费用0;两个人->每件东
阅读全文
摘要:n \leq 50的图,求其一个子图,使三元环数除以点数最大,输出这个值。 emmmm除法的话上分数规划,max\frac{三元环}{点}=t,max(三元环-t点)=0。好的,二分这个t,然后选一个三元环必须选三个点,可以建最大权闭合子图判定。
阅读全文
摘要:模板。 1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 //#include<time.h> 5 //#include<complex> 6 //#include<set> 7 //#include<queue> 8 #in
阅读全文
摘要:n \leq 50的两棵树,同编号的点有同个点权,问如何选一个点集,使得这个点集里的点在两棵树内都连通,且总点权最大,输出最大点权和。 枚举一个点在答案里,然后把树以它为根,此时选儿子一定要选父亲,构成最大权闭合子图。 1 #include<iostream> 2 #include<cstrin
阅读全文
摘要:n \leq 500条平面上的线段,问一种挑选方法,使得不存在直线x=p与挑选的直线有超过k个交点,且选得的直线总长度最长。 横坐标每个点开一个点,一条线段就把对应横坐标连一条容量一费用(-长度)的边;点x向点x+1连一条容量k费用0的边。这里的k边限制的是直线上其他不经
阅读全文
摘要:最小点覆盖=最小割 最大独立集与最小点覆盖互补 最大权闭合子图:源正负汇指条件
阅读全文
摘要:大中午看这题有点饿。。 n \leq 100的区间。。。不管了好长自己看在这 挺简单的最大权闭合子图。首先一定要选小区间才能选大区间,所以大区间向小区间连边。 然后选一个食物一定要先选它的代号的代价,于是代号建点,食物连代号。代号费用mx^2。 然后一个食物一点代价,把它自己的代价减去$a_
阅读全文
摘要:n \leq 2000的树有m \leq 40个洞,其他点上有各不相同的人,人走一个单位要一个时间,每个洞一秒只能让一人过。问最少多少时间所有人通过洞。 二分答案,然后由于洞口不多,可以把洞口每个时间的状态都表示出来,一个人如果能在t时间到达洞就可以向t,t+1,...连边。 但边太
阅读全文
摘要:n \leq 1000,m \leq 2000的图,每条边是双向的,双向分别有边权,求从1号点的最大边权最小的欧拉回路。 最大值最小--二分,注意图不连通时直接不合法。 接下来就是找是否有欧拉回路,注意这里有些边是不定向的有些边是定向的。为使每个点的入度等于出度,在调整边的时候会有类似“增广”的
阅读全文
摘要:n \leq 300,m \leq 300,n*m的格子里有起点有终点有空地有障碍,人会从起点选一个同行或同列空地跳过去,然后一直这样跳到终点。求至少删掉多少格子使得人跳不到终点。 首先S和T同行或同列无解。 这不是裸的最小割嘛。。等会这复杂度不大对 优化:一行里的点要连来连去嘛,每个点都要
阅读全文
摘要:n \leq 100,m \leq 100的n*m地图,现进行一个博弈:后手先选个点放棋子,然后先后手轮流向上下左右某个方向移动棋子一步,不能移到障碍点,一个非障碍点不能走两次。问所有后手能赢的位置。 可以发现网格图是一个二分图,在移动时好像在二分图的两边反复横跳。可以在二分图这个模型上
阅读全文
摘要:n<=1000 * m<=1000的网格图(见下)问最小割。 emmm上论文 好东西 然而建边建错WA*3,调试忘删WA*1。 非常好。 1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm> 4 #include<stdlib.
阅读全文
摘要:n<=200个点m<=40000条边无向图,求 t次走不经过同条边的路径从1到n的经过的边的最大值 的最小值。 最大值最小--二分,t次不重边路径--边权1的最大流。 1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 #i
阅读全文
摘要:n<=200个点m<=1500条无向带权边的图,每个点有人和容量,人可以移动,代价为所有人走过的边的权和,求使所有点人不超过容量的最小代价。 方法一:费用流。 错误!答案与边权不成比例。 方法二:二分一个答案,然后根据floyd求出的最短路看每个点在二分的答案下能去到哪些点,跑最大流检查是否合法。
阅读全文