![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
cy41
celery cabbage
展开
-
codeforces 621 D Cow and Fields
题目链接:D题意:给定一个点数为3e5,边数为3e5的且保证连通的边权都为1的无向图,给定k个特殊点,(2<=k<=n)(2<=k<=n)(2<=k<=n),定义要计算的路径长度是从1到n的最短路,现在要求你选择两个特殊点之间加一条长度为1的边,问你在所有方案中,要计算的路径长度最大的是多少。昨晚看这一场很晚了就没打,但十一点多看了一下该题,口胡了一个做法。...原创 2020-02-18 12:35:20 · 244 阅读 · 0 评论 -
codeforces 620(Div.2)E.1-Trees and Queries
题目链接:620E题意:给定一颗1e5规模的边权都为1的树,接下来1e5次询问,询问间独立,每次添加一条树中不存在的边,再给定两点询问两点间的路径长度是否可以达到k,两点间的路径可以多次包含相同点,相同边,可以来回走。这个题和我以前做过的一个题很像。一颗树的话两点间的最短路径是唯一的,所以如果没有新的边的话,只要路径长度是小于等于询问值,且两者的奇偶性相同则说明可以达到该询问值。如果加入一...原创 2020-02-16 12:53:03 · 421 阅读 · 0 评论 -
bzoj3251: 树上三角形
题目链接:bzoj3251题意:有根树,支持两种操作,询问从u->v的简单路径上是否存在三个点权可以构成三角形,单点修改点权。两边之和大于第三边,显然这是个很套路的东西,这个性质就是斐波那契性质,而斐波那契数列至多在五十项左右的时候炸int,故若简单路径长度大于50,那么必然有解,否则暴力check即可。#include<bits/stdc++.h>using names...原创 2019-11-23 09:52:54 · 130 阅读 · 0 评论 -
Codeforces Round #447 (Div. 2) E. Ralph and Mushrooms(缩点,拓扑)
题意:一个有向有环有重边有自环图,一条路径可以多次经过,并且每次路径长度的计算方式为:设路径长度为www,在第一次到达时路径长度为www,第二次到达时为max(w−1,0)max(w-1,0)max(w−1,0),第三次为max(w−1−2,0)max(w-1-2,0)max(w−1−2,0),第四次为max(w−1−2−3,0)max(w-1-2-3,0)max(w−1−2−3,0),即若在第...原创 2019-11-13 17:02:41 · 141 阅读 · 1 评论 -
HDU - 3488(二分图带权匹配)
题目链接:Q - Tour HDU - 3488 题意:找出若干个环覆盖所有点,并且总边权和最小。节点个数200200200,边数300003000030000,可能含有重边。因为要找若干个不相交的环,而且题目保证一定有解,故说明最后的选择中一定是每个点被出,入一次,故可将一个点拆为入点和出点,出点在左侧,入点在右侧,若没有边权的限制就是二分图匹配了,加上边权的限制就是带权二分图匹配,因为要...原创 2019-11-11 21:18:05 · 219 阅读 · 0 评论 -
Codeforces Round #597 (Div. 2)(最小生成树)
题目链接:这里题意:有n个城市分布在二维平面上,现在要选择一些城市建立电站,一些城市通过线路连接到这些电站,第i处建立电站的花费是cic_ici,在i与j之间架设线路花费为(ki+kj)∗曼哈顿距离(k_i+k_j)*曼哈顿距离(ki+kj)∗曼哈顿距离。并且电站的电具有传递性即若a处有电,b连接a,c连接b,则c处也有电,现在要求你输出最小花费,以及具体方案。数据范围:n<=20...原创 2019-11-07 17:31:16 · 161 阅读 · 0 评论 -
AcWing1073. 树的中心(树形dp)
题目链接:树的中心LT’s blog题意:找一个点,使得他到其他点的最长距离最小,边权有正有负。最开始的时候我想这个点一定在树的直径上的中点位置处,WA了好多次后注意到题目数据范围,把这个思路直径否决了。如果我们将这颗树化为一个有根树,那么一个点到其他点的最远距离就是:MAX(他到子树某个点的最远距离,他经过父亲节点到其他的点的最远距离)。第一部分可以直接一次dfs得到,对于第二部分来说...原创 2019-11-06 19:57:26 · 356 阅读 · 0 评论 -
cf686D(子树的重心)
cf686D题意:求解有根树中所有子树的重心。徐州打铁归来补题。首先树的重心的性质如下:树的重心一定存在于直连儿子中节点个数最大的一个中,或就是本身。树的重心的所有子树中(删去该节点)最大的一颗的节点个数一定小于等于所有节点数量和的一半。重心不下移,若求解出子树的重心,则整个树的重心一定是子树重心或子树重心的父亲。。。。父亲。。。父亲。一颗树最多只有两个重心,并且这两个重心一定是相...原创 2019-11-05 19:02:47 · 367 阅读 · 0 评论 -
Sightseeing tour POJ - 1637(混合图欧拉回路)
题目链接:POJ-1637题意:给出一张包含有向边与无向边的图,询问是否存在欧拉回路。参考自:kuang bin对于无向边,我们先随便指定一个方向,把所有边都变为有向边,那么对于有向图来说,存在欧拉回路的条件为 所有点的入度等于出度。并且给无向边随便指定一个方向的话,是不会改变一个点的出度入度之差的奇偶性的。那么如果对于这张新图来说,所有点的出度入度之差为偶数的话是不是才可能通过改变无向...原创 2019-10-21 15:00:56 · 138 阅读 · 0 评论 -
差分约束系统
求最大值:跑最短路,约束条件写作 dv−du<=wd_v-d_u<=wdv−du<=w,连边u−>v边权wu->v边权wu−>v边权w,松弛条件为一般最短路条件,若图中存在负环则无解。求最小值,约束条件一般为dv−du>=wd_v-d_u>=wdv−du>=w,将不等式连边同乘-1,写作小于等于形式,跑最短路,最后结果为答案取相反数。...原创 2019-10-17 11:23:43 · 131 阅读 · 0 评论 -
Wannafly挑战赛1 C-MMSet2(树的直径)
题目链接:C-MMSet2题意:点击上方跳转。结论:点集的直径/2的上取整即为答案。随便选一个点作为根,预处理倍增数组,以及各点到根节点的距离。注意到所有的询问点集加起来为10610^6106,说明n∗log2(n)n*log_2(n)n∗log2(n)的复杂度可行,对于边长度相同的树的直径,通常可用两次dfs求得,也即第一次从根节点出发找一个最远点,再从最远点出发找一个最远点。各节点与...原创 2019-09-21 08:47:57 · 143 阅读 · 0 评论 -
P2680 运输计划(二分答案,树上差分)
题意:中文题目链接:自己找二分答案,那么大于答案的边都需要修改一条边,于是将所有的大于答案的链打上标记(边差分),假设这样的链有x条,记录链最大值为k,二分答案为mid,枚举边,如果k-边权<=mid,并且这条边被覆盖了x次,说明该二分答案可行,考虑将答案缩小即可。#include<bits/stdc++.h>using namespace std;typedef lo...原创 2019-09-12 18:36:37 · 278 阅读 · 0 评论 -
2015沈阳网络赛 HDU 5452 Minimum Cut(树上差分)
题目链接:HDU 5452 Minimum Cut题意:给出一颗生成树,以及一些非树边,共同构成一个图,删掉一条树边以及删掉>=0>=0>=0条非树边可以使得图不联通,最少的删除数是多少。经典的树上差分,只有删除条件与352. 闇の連鎖不同。考虑每条非树边对树边的覆盖情况,一条从x->y的链会对路径上的所有边都覆盖一次,我们规定1为树根,用每条边的儿子...原创 2019-09-10 21:08:26 · 190 阅读 · 0 评论 -
bzoj 3307 雨天的尾巴(树上差分,动态开点线段树,线段树的合并)
题目链接:AcWing 353题意:一颗树,m次操作,x,y,z,每次给x到y的链上的所有点都增加一个种类为z的物品,问最后每个点上最多的物品是什么,若有多个物品相同,则输出编号最小的。数据范围:n,m<=105,1<=z<=109n,m<=10^5,1<=z<=10^9n,m<=105,1<=z&...原创 2019-09-09 13:34:44 · 137 阅读 · 0 评论 -
支配树模板(带权并查集版本)
#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1e5+7;struct Edge{ int v,next;}edge[maxn*20];int head[maxn],top,headfan[maxn],topfan;void init(){ ...原创 2019-09-06 19:26:30 · 139 阅读 · 0 评论 -
Important Sisters HDU - 4694(支配树)
我不会。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1e5+7;const int maxm=2e5+7;vector<int> dt[maxn];struct Edge{ int v,next;}edge[maxm];//正向...原创 2019-08-22 20:21:36 · 144 阅读 · 1 评论 -
差分约束系统
求最小值:最长路,不等式写为大于等于 k[v]-k[u]>=w; 松弛条件为d[v]<d[u]+w 存在正环则无解求最大值:最短路,不等式写为小于等于 k[v]-k[u]<=w; 松弛条件为d[v]>d[u]+w 存在负环则无解当然对于最小值,亦可将不等式左右同乘-1,跑最短路,若无负环则结果为答案取绝对值。...原创 2019-03-27 17:17:23 · 114 阅读 · 0 评论 -
BZOJ1123 tarjan求割点
考虑删除的点为割点和非割点:设总共有n个点,第i个点断开;非割点,不会改变其余n-1个点的连通性,那么剩下的n-1个点都是连通的,故只有i点与别的点都不连通,那么此时的有序点对为:2*(n-1); 割点,那么去掉这些与i点相连的边后,会划分成若干个连通块,若我们已知每个连通块内的点数,那么将他们两两相乘再相加即为有序点对;好的,这时问题转化为了如何快速的求出去掉i点后,各个连通块内的点个数...原创 2019-04-19 12:22:40 · 230 阅读 · 0 评论 -
Distance on the tree (2019南昌网络赛)
主席树套LCA题目链接:https://nanti.jisuanke.com/t/38229、预处理出lca的一套东西,将查询区间[L,R]分成两半,[L,LCA(L,R)],[R,LCA(L,R)] 计算区间内小于等于k的个数即可主席树记录每一个子节点到初始节点间出现的所有线段长度的个数。主席树这种东西的话,,,百度学吧。。。我讲不清,我太菜了。。对于常见的主席树区间查询来说...原创 2019-05-09 21:58:58 · 170 阅读 · 0 评论 -
BZOJ1977 严格次小生成树
最小生成树,LCA次小生成树必定是从最小生成树中删掉一条边,再加入一条不会成环的边即可。预处理出每个点到其祖先的路径上的最大边以及次大边。那么我们可以枚举每条非树边,如果这条边比u,v路上的所有边都大的话,则可以替换掉最大的边作为次小生成树的备选。如果该边与最大边相等,那么可以用该边替换掉路径中的次大边,作为备选答案。预处理最大边及次大边的话我们需要在bfs处理节点上翻中...原创 2019-05-15 21:51:25 · 138 阅读 · 0 评论 -
CH2101 可达性统计 (拓扑排序+状态压缩)
题目链接:http://contest-hunter.org:83/contest/0x20%E3%80%8C%E6%90%9C%E7%B4%A2%E3%80%8D%E4%BE%8B%E9%A2%98/2101%20%E5%8F%AF%E8%BE%BE%E6%80%A7%E7%BB%9F%E8%AE%A1以前看这道题的时候,拓扑排序搞出来就不会压缩状态了,这几天学会了用bitset这个神奇的东...原创 2019-05-21 17:18:35 · 367 阅读 · 0 评论 -
二分图匹配入门例题
先上一些概念:“任意两条边都没有公共端点”的最大的边的集合称为二分图的最大匹配。 二分图的一组匹配S是最大匹配,当且仅当图中不存在S的增广路。 二分图匹配的要素有2,一是0要素,节点可以分成独立的两个集合,每个集合内部有0条边;1要素,每个节点只能与1条边匹配。 二分图最小点覆盖(选最少的点使得所有边都被覆盖)包含的点数==最大匹配包含的边数 二分图最大独立集(任意两点之间都没有边相连...原创 2019-07-28 21:59:05 · 243 阅读 · 0 评论 -
斯坦纳树板子
给定点集,尝试加入一些边,以及其他点(可不加),使得这些点互相连通,且总权值和最小。这个板子好像会T,还是用这个吧:斯坦纳树const int maxm=2009;const int maxn=39;const int inf=0x3f3f3f3f;struct Edge{ int v,w,next;}edge[maxm];int head[maxn],top;...原创 2019-07-24 19:21:47 · 162 阅读 · 0 评论 -
2019杭电多校第一场 E - Path(最短路+最小割)
题目链接:E - Path HDU - 6582题意:给定n个点,m条有向边,首先求出最短路,然后在这张新图上跑最小割最短路和最小割都是板子,我们现在关注的就是如何构造出这张图:for(int u=1;u<=n;++u) for(int i=head[u];i!=-1;i=edge[i].next) if(dis[edge[i].v]==dis[u...原创 2019-07-29 09:51:06 · 246 阅读 · 0 评论 -
2019牛客暑期多校训练营(第五场)F-maximum clique 1(二分图最大独立集)
题意:给定n个数字,求出最大的集合,使得集合内任意两个数字在二进制下都有两个及以上1的位置不同。我正好是前一天刚刷到二分图最小点覆盖,下一页就是最大独立集2333,不过让我做也可能做不出来,毕竟开这道题的人很少。正难则反,我们可以将只有1位差异的数字之间连边,那么同一条边相连的两个点肯定不可以全选,而且在这种图中,我们最后选出的集合任意两点之间肯定不可以有边的存在,那么就转化成了二分图求最大独...原创 2019-08-02 20:41:04 · 254 阅读 · 0 评论 -
费用流模板
最小费用最大流:(SPFA求最长路)(下面是一个求二分图最小权重的例题)375. 蚂蚁将白黑点左右分部,连接所有边,这道题等价于求总边权最小。#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>#include<queue>using...原创 2019-08-04 21:16:44 · 265 阅读 · 0 评论 -
2019牛客暑期多校训练营(第四场)A-meeting(树的直径)
题意:给定一颗树,以及m个人,现在要求所有人到一个位置去,花费的时间是最后一个人到的时间,要求这个时间最小。如果有n个人,这n个人构成一颗树,那么他们到某个地点去花费最小是不是树的直径除以2向上取整。那现在是划定了m<=n,相当于求m个人的直径。而求树的直径可以先一次bfs求得一个最远的点p,再从p出发bfs找到最远的点q,同时记录前驱,最后从q推回到p就可以了。#incl...原创 2019-07-27 20:16:03 · 190 阅读 · 0 评论 -
Network POJ-3694(tarjan)
题目链接:POJ-3694**题意:**给出一张n个点m条边的无向连通图,q次操作,每次添加一条无向边,然后输出当前图的桥的数量。数据范围:n<=105,m<=2∗105,q<=103n<=10^5,m<=2*10^5,q<=10^3n<=105,m<=2∗105,q<=103首先我们先跑一...原创 2019-08-08 09:21:18 · 158 阅读 · 0 评论 -
树的直径(板子)
const int maxn=1e5+7;//链式前向星;struct Edge{ int v,w,next;}edge[maxn<<1];int head[maxn],top;void init(){ top=0; memset(head,-1,sizeof(head));}void add(int u,int v,int w){ ...原创 2019-07-28 10:20:39 · 198 阅读 · 0 评论 -
Legacy CodeForces - 786B(数据结构优化建图)
最近学了线段树优化建图,用来处理一个点向一个区间连边,但是边数太大,直接对区间中所有点连边的话会爆炸,不管是什么存图方式都存不下来,而线段树就可以用来优化这种类型的建图。其实也不是真的建一颗线段树,只是使用了线段树将区间划分为节点的思想去使用它。具体来说,如果是求最短路一类的问题,可以在父亲节点向左右子树连一条边权为0的边,叶子节点向他代表的端点连一条边权为0的边,然后单点向区间连边的话,就是...原创 2019-08-18 21:40:54 · 183 阅读 · 0 评论 -
最小树形图(朱刘算法)
有向图,从某一点出发到其他所有点的最小权值总和。过程:选入边集,找到除rot节点外,每一个点的所有入边中权值最小的,用in[]记录这个最小权值,用pre[]记录该最小入边的前驱;(若图中存在孤立节点的话,不存在最小树形图)找有向环,用id[]记录节点所属环的编号。将有向环缩点,并更新与之有直连边的权值。以环的数量为下一次查找的点数建新图,继续重复上述过程直到没有环或者判定出不存在最小树...原创 2019-08-19 16:10:54 · 179 阅读 · 0 评论 -
LCA
1.倍增法(在线做法)首先预处理从任一节点出发依次到达节点的树深,以及到该节点的路径长度,分别用d[],dis[]表示。f[i][j]表示i节点向着根节点走2^j步能到达的节点,若走2^j步后没有点则记为0,所以输入点时需要看题目有没有0点输入,如果有的话,给所有点都向后偏移一位。i向根节点走2^k步可以分解为走2^(k-1)步,再走2^(k-1)步,那么可以得到递推公式:f[i][j...原创 2019-04-15 21:49:11 · 431 阅读 · 0 评论