图论
文章平均质量分 61
图论相关算法及题目
CaptainHarryChen
I solemnly swear that I am up to no good.
展开
-
【POJ2396】Budget(有源汇的上下界可行流)
题意:要求构建一个m*n的矩阵,给出每行,每列的和,和C个要求:表示某个坐标的数必须严格”>”或”=”或”<”某个值,0是通配符,表示一整行(列)。 建图: 源点->横排 (该横排的和) 横排->该横排的点 (按C个要求给权值,分上界下界) 该横排的点->竖排(按C个要求给权值,分上界下界) 竖排->汇点(该竖排的和) 这就成了有源汇的可行流问题(不...原创 2016-12-09 23:06:50 · 447 阅读 · 0 评论 -
【CodeForces793E】Oleg and chess(扫描线+线段树+网络流)
题目大意给一个n×n (n≤10000)n\times n\ (n\leq 10000)n×n (n≤10000)的棋盘,有q (q≤10000)q\ (q\leq 10000)q (q≤10000)个不相交的矩形区域不能放棋子,在剩余的格子里最多能放多少个车,使得他们无法互相攻击。题解十分综合的题目如果nnn很小,对每一个横坐标和纵坐标建立一个结点...原创 2018-12-25 20:00:35 · 375 阅读 · 0 评论 -
最小费用流——原始对偶(Primal-Dual)
EK算法的改进版,不知道名字(也许是ZKW??)EK算法EK算法就是不断的用SPFA寻找一条最小费用的增广路径,直到无法增广为止。改进类似于Dinic,先将结点用到汇点T的最短距离标号,每次只走dis[v]==dis[u]+cost[u-&gt;v]的边进行增广,保证了费用最小。在这种情况下,就可以类似Dinic,同时增广多条路径。细节较多,见代码及注释代码#include&lt;...原创 2018-12-25 09:17:59 · 3847 阅读 · 4 评论 -
【AtCoder1984】Wide Swap (拓扑排序转化)
题意给一个(1~n)排列A,你可以做任意次操作,选择两个位置i,j,且∣i−j∣≥K|i-j|\geq K∣i−j∣≥K且∣Ai−Aj∣=1|A_i-A_j|=1∣Ai−Aj∣=1,然后交换AiA_iAi,AjA_jAj。求以此操作得到的最小字典序排列。题解用pos[i]表示值i所在位置,题目操作在pos上即为:选择相邻两个数,且这两个数差大于等于K,交换这两个数。容易发现两个个性...原创 2018-09-22 22:04:24 · 435 阅读 · 0 评论 -
【AtCoder1981】Shorten Diameter(图论思维)
题意给一棵树,要求删去最少的点,使得树联通且直径小于等于K(N<=2000)题解简单的问题也容易想复杂。对于K为偶数,枚举一个点,将距离此点>K/2的全部删掉即可满足条件,取删点数最小值。对于K为奇数,枚举一条边,树被此边分为两棵,将其深度>(K-1)/2的全部删掉,取删点数最小值。考试时想复杂了:把直径求出,然后试图从直径两头删点,包含大量特殊情况。。。死路一条...原创 2018-09-22 21:16:13 · 433 阅读 · 0 评论 -
【AtCoder2306】Rearranging(拓扑)
题意黑板上有n个数,A首先按照自己的意愿将n个数重新排列(可以是原来的顺序),然后让B进行如下操作:选择一对相邻且互质的数,交换它们的位置.(这个操作B可以进行无数次.)A想要这个序列的字典序尽可能小,而B想要这个序列的字典序尽可能大。两人都采取最优策略的情况下,最后形成的序列是什么样子的.题解发现不互质的数,只要在一开始A放好后,顺序就固定下来,无法改变。为了使得字典序最小,我们对...原创 2018-09-25 21:55:37 · 338 阅读 · 0 评论 -
【CodeForces1019E】Raining season(边分治+斜率优化)
题目大意有n个结点的一棵树,每条边有两个权值a,b,第t天经过第i条边花费时间ait+bait+ba_it+b,给定m,求t=0,1,2...m−1t=0,1,2...m−1t=0,1,2...m-1时,最长的路径长度。题解简介边分治类似点分治选择重心,边分治选择一条边,把树分成两边,使得两边的点数最接近。 但对普通的树进行边分治容易退化,如下面这种图会退化为O(n)O(n)O(...原创 2018-08-19 20:42:03 · 1292 阅读 · 0 评论 -
最小生成树——单点度数限制
问题求最小生成树,满足结点1的度数不超过k的情况下,使边的权值和最小。思路先去掉结点1,用Kruskal生成一个森林,设其有m个联通块。 如果k<mk<mkO(n)O(n)O(n)找环重复执行以上操作直到结点1度数为k,或者操作无法使得生成树更优。题目POJ1639#include<iostream>#include<string>...原创 2018-07-21 13:01:58 · 1507 阅读 · 0 评论 -
最短路——差分约束系统
问题已知一系列不等式 ⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪Xi1−Xj1≤d1Xi2−Xj3≤d2Xi3−Xj3≤d3...Xik−Xjk≤dk{Xi1−Xj1≤d1Xi2−Xj3≤d2Xi3−Xj3≤d3...Xik−Xjk≤dk\left \{ \begin{array}{c}X_{i_1}-X_{j_1} \leq d_1 \\ X_{i_2}-X_{j_3} \leq d_2 ...原创 2018-07-20 21:24:17 · 194 阅读 · 0 评论 -
网络流——平面图最小割
问题对一个平面无向图,求最小割。 通俗理解因为这是平面图,没有边相交,所以它的最小割,一定可以用铅笔画一条线,把图的S,T两点分在两边,使得铅笔线穿过的边权值最小。 于是可以建立把原图分为上下两部分,并建立对偶图,使得对偶图的边权为原图的边权: 于是从S到T的最短路,就是原图的最小割(权值最小的铅笔线)关于如何判断S,T点:连一条原图S->T的边在最外面,有框出来一...原创 2018-07-09 19:40:01 · 1700 阅读 · 0 评论 -
【hihoCoder1511】树的方差
题意对于一棵 n (1≤n≤1000000) 个点的带标号无根树,设 d[i] 为点 i 的度数。 定义一棵树的方差为数组 d[1..n] 的方差: 令p=d¯p=\overline d,(d的平均值)(V为方差) V=(d1−p)2+(d2−p)2+...+(dn−p)2nV=\frac {{(d_1-p)}^2+{(d_2-p)}^2+...+{(d_n-p)}^2} n 给定 n原创 2018-01-20 10:44:25 · 464 阅读 · 1 评论 -
欧拉回路(欧拉路径)
定义给一个连通图,求一条每条边恰好走一次的路径,就叫欧拉路径,如果要求回到原点,就叫欧拉回路。(也叫一笔画问题)原创 2017-09-01 20:02:15 · 1229 阅读 · 0 评论 -
【POJ1780】Code(欧拉回路)
题目大意有一个很水的密码系统,你只需要一阵乱按,按到的最后n位数是对的,锁就打开了。找一个最短的,字典序最小的序列,包含n位数的所有情况。(那个这个序列去凑密码就一定能开) 题目的提示:序列一定是10n+n−110^n+n-1长度的。题解本人很弱,看的其他大神的题解。原创 2017-09-01 20:44:30 · 407 阅读 · 1 评论 -
【CodeForces429E】Points and Segments(欧拉回路)
题目大意有n(1≤n≤105)n(1≤n≤10^5)条线段,每条覆盖[li,ri](1≤li,ri≤109,li和ri是整数)[l_i,r_i](1≤l_i,r_i≤10^9,l_i和r_i是整数)的区间,给每条线段染红色或蓝色,使得数轴上每个点(不一定是整点)的红色覆盖数与蓝色覆盖数差的绝对值小于等于1。输出任意一种染色方案。题解用到的欧拉回路性质先说一说我们在本题中需要用到的一些欧拉回路的一些性原创 2017-09-06 14:07:03 · 961 阅读 · 0 评论 -
网络流——最小割求最大权闭合子图
定义有一个有向图,每一个点都有一个权值(可以为正或负或0),选择一个权值和最大的子图,使得每个点的后继都在子图里面,这个子图就叫最大权闭合子图。原创 2017-08-26 17:39:04 · 8553 阅读 · 1 评论 -
【CQOI2012】交换棋子(费用流)
题目大意:有一个n行m列的黑白棋盘,你每次可以交换两个相邻格子(相邻是指有公共边或公共顶点)中的棋子,最终达到目标状态。要求第i行第j列的格子只能参与M[i][j]M_{[i][j]}次交换。原创 2017-03-10 22:03:29 · 630 阅读 · 0 评论 -
生成树计数——矩阵树定理(Matrix-Tree)
文章目录结论无向图有向图口胡Matrix-Tree证明前置技能行列式定义初等变换拉普拉斯展开求法柯西-比尼定理(Cauchy-Binet)Matrix-Tree定理证明基尔霍夫矩阵性质基尔霍夫矩阵行列式为0不连通的图的主余子式行列式为0树的主余子式为1关联矩阵证明主体证毕结论无向图对于无向图GGG,设第iii个点的度数为did_idi,第iii个点与第jjj个点相连的边数为aija_{ij...原创 2019-01-18 20:00:50 · 4170 阅读 · 1 评论