
图论
_昨日不可追
这个作者很懒,什么都没留下…
展开
-
luogu. p2865(次短路)
路障问题贝茜选择的第二短的路径中,可以包含任何一条在最短路中出现的道路,并且,一条路可以重复走多次。当然咯,第二短路的长度必须严格大于最短路(可能有多条)的长度,但它的长度必须不大于所有除最短路外的路径的长度。特殊样例输入:5 51 2 52 3 53 4 44 5 61 5 21输出:21输入:4 51 2 1002 4 2002 3 1003 4 1001 ...原创 2019-06-21 14:34:43 · 287 阅读 · 0 评论 -
Codeforces Round #625 (Div. 2, based on Technocup 2020 Final Round) D - Navigation System(最短路 BFS)
传送门题意:给一个有向图,然后有一条长度为k要走的路径,起点,终点确定如果在之间走的时候,发现有可以到达终点的更短的路径,可以重新选择路径问重新选择次数的最小值和最大值思路:先反向建边,bfs算出终点到每个点的最短路径考虑重新选择路径的情况1,如果在走的路径上的下一个点到终点不是最短的且有其他比他更短的路径,那么一定要重新选择2,如果在走的路径上的下一个点到终点是最短的且还有其他...原创 2020-03-02 23:45:09 · 247 阅读 · 0 评论 -
点分治详细解析
点分治,是处理树上路径的一个极好的工具。一般如果需要大规模处理树上路径,点分治是一个不错的选择。 这里我就来讲一讲我自己对于点分治的一点理解和感悟(帮助新手入坑……) 现在就开始吧!1.点分治的基本思想 点分治,顾名思义就是基于树上的节点进行分治。 如果我们在深入一点呢?对于点的拆开其实就是对于树的拆开。 所以我认为点分治的本质其实是将一棵树拆分成许多棵子树处理,并不断进行。 这应...转载 2019-11-30 16:00:03 · 299 阅读 · 0 评论 -
点分治
luogu P3806 [模板] 点分治1Codeforces 434E Furukawa Nagisa’s Tree其实点分治也是暴力,用于处理树上一些奇怪的东西. 我们直接来看题.luogu P3806 [模板] 点分治1给你一棵树,每一条边都有边权,给出很多询问,询问树上是否存在距离为k的点对.k≤107,我们直接处理所有点之间的距离放在一个数组里,O(1)O(1)回...转载 2019-12-03 14:47:22 · 201 阅读 · 0 评论 -
Educational Codeforces Round 85 (Rated for Div. 2) D. Minimum Euler Cycle(字典序最小的欧拉回路)
目录传送门题意:思路:代码:传送门题意:思路:构造的欧拉回路是1 2 1 3 1 4 1 5……1 n2 3 2 4 2 5……2 n3 4 3 5……3 n……n-1 n1一共n*(n-1)+1个数二分取[L,R]的数即可代码:#include <iostream>#include <stdio.h>#include <algori...原创 2020-04-11 13:35:50 · 219 阅读 · 0 评论 -
2019CCPC秦皇岛赛区 hdu 6736 Forest Program(dfs找出所有环的大小&&组合计数)
传送门Forest ProgramTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 1745 Accepted Submission(s): 612Problem Description The kingdom of Z is fighting against原创 2020-08-11 12:01:43 · 243 阅读 · 0 评论 -
牛客小白月赛23 G树上求和 (dfs)
dfs一遍求出每个子树的大小统计一下每条边经过的次数,排序赋值即可代码:typedef long long ll;using namespace std;const int MAXN=1e5+50;const int inf=0x3f3f3f3f;const int M=5000*4;const int mod=1e9+7;int n;vector<int>p[MAXN];ll ans;ll dp[MAXN];ll x[MAXN];struct sa{ in.原创 2020-06-07 12:24:00 · 293 阅读 · 0 评论 -
Codeforces Round #633 (Div. 2) D. Edge Weight Assignment(思维,树深)
传送门题意:给一个树,然后我们给边赋值使得,任意两个叶子结点之间的路径异或值为0,求路径上最大最小有几个不同的数字思路:显然,最小为1或3如果有两个叶子结点的路径长度为奇数,那就为3最大值应该是n-1,就是每条边都赋不同的值,但是如果两个叶子结点的距离为2(就是某个结点有多个叶子结点,这些叶子结点两两之间的距离都是2,这些边的值必须都相等),那这两条边的值必须相同,那最大值就会减少...原创 2020-04-13 10:06:27 · 232 阅读 · 0 评论 -
【模板】最近公共祖先(LCA)(luogu p3379)(树上倍增)
https://www.luogu.org/problem/P3379题目描述如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。输入格式第一行包含三个正整数N、M、S,分别表示树的结点个数、询问的个数和树根结点的序号。接下来N-1行每行包含两个正整数x、y,表示x结点和y结点之间有一条直接连接的边(数据保证可以构成树)。接下来M行每行包含两个正整数a、b,表示询问a结点和b...原创 2019-08-01 16:59:27 · 165 阅读 · 0 评论 -
Codeforces 1294F Three Paths on a Tree(树的直径,思维)
传送门题意:给一个n个结点的无权树,三个结点p1,p2,p3,这三个结点组成的三条路径的路径并集(这个意思就是三条路径之间,重复的边算一次)为ans,找出使得ans最大的三个结点,可能答案有多个,输出一种组合即可思路:很显然有种最优解的两个结点为直接的端点p1,p2(直接用两次bfs找直接的端点即可)然后呢,我们要再找到一个点p3使得,三个点之间的路径的并集最大我们发现三个点之间的路径...原创 2020-02-01 22:47:17 · 234 阅读 · 0 评论