随笔分类 -  图论

摘要:http://acm.hdu.edu.cn/showproblem.php?pid=6121 题目大意: 给你一颗 n 个节点的完全 k 叉树,问你这棵树中所有子树结点个数的总异或值。 分析: 我们很容易看到于发现对于这样的一颗树 , 肯定是只有一颗子树不是满k叉树 , 知道这样后 , 这就很简单了 阅读全文
posted @ 2019-05-04 14:02 shuai_hui 阅读(181) 评论(0) 推荐(0)
摘要:题意 给出以1号点为根的一棵有根树,问每个点的子树中与它距离小于等于l的点有多少个。 树上二分.这个做法还是基于树上差分的,也就是对于每一个点uu,我们要找到它向上跳LL的长度最高能够跳到的祖先.(当然倍增求出这个连dfsdfs都不用更加粗暴.)因此我们不仅要记录每一个节点到根节点的距离disdis 阅读全文
posted @ 2019-03-06 17:15 shuai_hui 阅读(196) 评论(0) 推荐(0)
摘要:转:https://www.cnblogs.com/ywjblog/p/9254997.html 树的直径给定一棵树,树中每条边都有一个权值,树中两点之间的距离定义为连接两点的路径边权之和。树中最远的两个节点之间的距离被称为树的直径,连接这两点的路径被称为树的最长链。后者通常也可称为直径,即直径是一 阅读全文
posted @ 2019-03-02 11:25 shuai_hui 阅读(265) 评论(0) 推荐(0)
摘要:题意:给你一个含n条边的带权无向连通图,q次查询,每次查询两点间的最短距离。 思路:LCA+思维。 设a,b两点间的距离为f(a,b) 则f(a,b)=dis[a]+dis[b]-2*dis[lca(a,b)]; 由于n条边,因此我们先任取一条边,设这条边为X,Y,权值为Z,设查询的点为x,y,则答 阅读全文
posted @ 2019-02-26 20:39 shuai_hui 阅读(442) 评论(0) 推荐(0)
摘要:这道题的进阶版本 进阶版本 题意: 一个n个点,n条边的图,2中操作,1是将某条边的权值更改,2是询问两点的最短距离。 题解: 由于n个点,n条边,所以是树加一个环,将环上的边随意取出一条,就是1颗树,以取出的边的一个端点为根,建立有根树。虚线就是取出的边。红色为环上的边。 对于更改边的权值的操作, 阅读全文
posted @ 2019-02-26 20:27 shuai_hui 阅读(328) 评论(0) 推荐(0)
摘要:题意: 知道了一颗有 n 个节点的树和树上每条边的权值,对应两种操作: 0 x 输出 当前节点到 x节点的最短距离,并移动到 x 节点位置 1 x val 把第 x 条边的权值改为 val 题意: 知道了一颗有 n 个节点的树和树上每条边的权值,对应两种操作: 0 x 输出 当前节点到 x节点的最短 阅读全文
posted @ 2019-02-26 20:17 shuai_hui 阅读(322) 评论(0) 推荐(0)
摘要:转:https://www.cnblogs.com/shao0099876/p/7366852.html?utm_source=itdadao&utm_medium=referral 一、欧拉路径的数学定义 欧拉路径是定义在图上的一种路径,满足经过图中的每条边恰好一次。 欧拉路径在无向图中存在的充要 阅读全文
posted @ 2019-01-17 16:29 shuai_hui 阅读(935) 评论(0) 推荐(0)
摘要:转:https://www.cnblogs.com/Ash-ly/p/5397702.html 定义: 欧拉回路:图G的一个回路,如果恰通过图G的每一条边,则该回路称为欧拉回路,具有欧拉回路的图称为欧拉图。欧拉图就是从图上的一点出发,经过所有边且只能经过一次,最终回到起点的路径。 欧拉通路:即可以不 阅读全文
posted @ 2019-01-17 16:22 shuai_hui 阅读(1177) 评论(0) 推荐(0)
摘要:分析: 小Ho:这种简单的谜题就交给我吧! 小Hi:真的没问题么? <10分钟过去> 小Ho:啊啊啊啊啊!搞不定啊!!!骨牌数量一多就乱了。 小Hi:哎,我就知道你会遇到问题。 小Ho:小Hi快来帮帮我! 小Hi:好了,好了。让我们一起来解决这个问题。 <小Hi思考了一下> 小Hi:原来是这样。。。 阅读全文
posted @ 2019-01-17 16:17 shuai_hui 阅读(733) 评论(0) 推荐(0)
摘要:题意:有最少用多少条边不重复的路径可以覆盖一个张无向图 ,输出每条路径的边的序号 , 如果是反向就输出-id。 也就是可以多少次一笔画的方式画完这个无向图。 题解:我们已知最优胜的情况是整个图是欧拉图的时候 ,我们只需要一笔就搞定了 , 可是现在这个图并不是一个欧拉图, 所以现在问题是其转化为欧拉图 阅读全文
posted @ 2019-01-17 15:18 shuai_hui 阅读(433) 评论(0) 推荐(0)
摘要:题意: 给定S,N,把S+1,S+2,...S+N这N个数填到1,2,...,N里,要求X只能填到X的因子的位置。(即X%Y=0,那么X才能放在Y位置) 问是否能够放满。 分析:经过小队的分析得出的结论是如果S+1,S+2,...S+N有两个素数就肯定是不行的对吧 ,虽然素数可以取本身当如果素数可以 阅读全文
posted @ 2018-11-19 14:30 shuai_hui 阅读(253) 评论(0) 推荐(0)
摘要:题意: 给出n个炸弹的信息 :坐标x , 坐标y , 爆炸半径 , 成本: 如果一个炸弹被引爆那这个范围的都爆炸 , 问最小的成本是多少? 题意:首先先来个n^2 暴力出某个炸弹爆炸波及的其他炸弹,用一条有向边来连接 , 然后找到强连通分量 ,缩点 , 就可以形成一张新的有向图 , 那是不是就是所有 阅读全文
posted @ 2018-11-18 23:31 shuai_hui 阅读(179) 评论(0) 推荐(0)
摘要:您将获得一个包含N个节点的树。树节点的编号从1到Ñ。每个节点都有一个整数权重。 我们会要求您执行以下操作: uvk:询问从节点u到节点v的路径上的第k个最小权重 输入 在第一行中有两个整数Ñ和中号。(N,M <= 100000) 在第二行中有N个整数。第i个整数表示第i个节点的权重。 在接下来的N- 阅读全文
posted @ 2018-10-07 11:11 shuai_hui 阅读(190) 评论(0) 推荐(0)
摘要:题意很简单 给一个树(n < 5w) 每个点有个权值,代表商品价格 若干个询问(5w) 对每个询问,问的是从u点走到v点(简单路径),商人在这个路径中的某点买入商品,然后在某点再卖出商品, 最大可能是多少 注意一条路径上只能买卖一次,先买才能卖 *分析:先求出点u,v的最近公共祖先f,然后求u->f 阅读全文
posted @ 2018-09-25 20:18 shuai_hui 阅读(265) 评论(0) 推荐(0)
摘要:题目:给定一张n个点m条有权边的无向联通图,q次询问两点间的最短路 n≤100000,m≤100000,m-n≤20. 首先看到m-n≤20这条限制,我们可以想到是围绕这个20来做这道题。 即如果我们随便在图上找一棵树,有最多21条非树边,连接最多42个顶点 考虑两点x,yx,y之间的最短路就是某个 阅读全文
posted @ 2018-09-25 14:14 shuai_hui 阅读(943) 评论(0) 推荐(0)
摘要:题目链接: http://poj.org/problem?id=2763 #include #include #include #define clr(x)memset(x,0,sizeof(x)) #define maxn 200005 struct node { int to,next,w,xu; }e[1000000]; int tot; int head[maxn]; void ... 阅读全文
posted @ 2018-09-20 19:29 shuai_hui 阅读(538) 评论(0) 推荐(0)
摘要:原理可以参考大神 LCA_Tarjan (离线) TarjanTarjan 算法求 LCA 的时间复杂度为 O(n+q) ,是一种离线算法,要用到并查集。(注:这里的复杂度其实应该不是 O(n+q) ,还需要考虑并查集操作的复杂度 ,但是由于在多数情况下,路径压缩并查集的单次操作复杂度可以看做 O( 阅读全文
posted @ 2018-09-20 17:21 shuai_hui 阅读(480) 评论(0) 推荐(0)
摘要:不懂的可以先看这:1 2 3 求桥 #include<bits/stdc++.h> using namespace std; const int maxn = 1e3 + 10; const int maxm = 4e5 + 10; struct egde{ int v, nxt; }Edge[ma 阅读全文
posted @ 2018-09-19 14:03 shuai_hui 阅读(177) 评论(0) 推荐(0)
摘要:题目大概: 每个学校都可以把软件复制好,交给它名单上的学校。 问题A:把软件复制成几份,然后交给不同的学校,所有学校才能够都有软件。 问题B:添加几条边,能使得这个图变成强连通图。 思路: 找出所有的强连通分量,然后缩点,变成一个新有向无环图,求每个强连通分量的入度和出度。 A:入度是0的点就是复制 阅读全文
posted @ 2018-09-13 20:47 shuai_hui 阅读(118) 评论(0) 推荐(0)
摘要:有N(N<=10000)头牛,每头牛都想成为most poluler的牛,给出M(M<=50000)个关系,如(1,2)代表1欢迎2,关系可以传递,但是不可以相互,即1欢迎2不代表2欢迎1,但是如果2也欢迎3那么1也欢迎3. 给出N,M和M个欢迎关系,求被所有牛都欢迎的牛的数量。 用强联通分量做 首 阅读全文
posted @ 2018-09-13 19:16 shuai_hui 阅读(200) 评论(0) 推荐(0)