图论
Mmm040403
这个作者很懒,什么都没留下…
展开
-
Noip模拟赛-C(一道环套树的神奇题目)
题目链接:http://noi.ac/problem/694前置知识:一个联通图没有有偶环=它是环套树或者树=仙人掌=没有2个环共用相邻的边(over)为啥呢:因为若是2个环有相邻的边,那么就存在一个大环的边数=奇+奇-2*重复的边,显然这是一个偶数(over)环套树的一些性质:m=n(自己想去)所以对于一个奇环森林就可以做到每个点配对一个边。好,现在考虑题目问的东西。求x,y之间...原创 2019-08-16 19:46:47 · 191 阅读 · 0 评论 -
noip2014-寻找道路
题目很清楚,要满足2个要求:1.路径上的所有点的出边所指向的点都直接或间接与终点连通。2.最短条件2很好做,spfa或者bfs反正怎么搞都行。于是考虑条件1我们当然想知道每个点能否经过。对于不能经过的点,无非是2种:1.自身到不了终点的 2.它的出边指向的点有到不了终点的。首先找满足条件1的,然后把所有指向它们的点都标记为0就成对于条件1,我们建反边……从t开始搜索...原创 2018-11-02 17:44:10 · 348 阅读 · 0 评论 -
货车运输:LCA的应用
洛谷P1967题目链接:https://www.luogu.org/problemnew/show/P1967审题:1.求的是瓶颈路最大,我们很容易就想到一个图里最大瓶颈路的求法,求出最大生成树,而瓶颈路一定在这棵生成树上,所以我们可以将一个图缩成一颗树。2.现在这个图已经成了一棵树,这样的话任意两点之间的路径是唯一的,所以我们很容易求出它的瓶颈(所经过最短的路径)。3.怎么求...原创 2018-10-29 23:33:45 · 228 阅读 · 0 评论 -
TARJAN算法与其运用
一.割点与割边题目链接 http://hihocoder.com/problemset/problem/1183割点:x不是根:只要有low[v[x]]>=low[x] 说明v[x]不通过x没法回到x来时的地方,所以x为割点 x是根:x有两个及以上的直接儿子(注意这里的儿子是放在!dfn中的,不然就是x的儿子的儿子)即可代码如下:注意点都写注释里了呀!void tarj...原创 2018-10-27 20:38:16 · 204 阅读 · 0 评论 -
运输计划
题目链接 https://www.luogu.org/problemnew/show/P2680一.审题-关键点:1.只能建造一个虫洞,也就是只能将一条边的权值改成02.求的实质上是最长路最短二.思路……1.所有的都是一棵树上的两点的距离->自然想到lca求两点距离2.然后求完了距离要求最值。因为是最长路最短,很自然想到二分答案3.二分固定最长路最短,也就是说所有...原创 2018-10-26 19:19:59 · 170 阅读 · 0 评论 -
数的重心
T1:会议 (洛谷P1395)解题关键:重心的性质:所有点到根(重心)的距离最短。我掉到sb坑:看题看题!!!相同的情况取编号小的!!!代码如下:(其实就是裸的树的重心啦)#include <iostream>#include <cstdio>#include <vector>using namespace std;/*重心:所有结...原创 2018-10-22 22:57:40 · 592 阅读 · 1 评论 -
负环
题目链接:https://www.luogu.org/problemnew/show/P3385两种方法:Bellman-ford 和 SPFA1.Bellman-ford核心:枚举每条边,用每条边来更新每个点的最短距离(dis数组)因为是有限次枚举边的个数(而不是点),所以可以用来判断负环判断负环:如果做完了更新操作,还存在dis[v]>dis[u]+w(u,v),则存...原创 2018-10-28 10:14:07 · 192 阅读 · 0 评论 -
How far away: RMQ 与 LCA
题目链接:How far awayhttp://acm.hdu.edu.cn/showproblem.php?pid=2586RMQ做法这里满足一个性质:对于任意的x,y,他们的lca必定是x,y的路径上的最浅的点(dep最小)所以我们就可以记录路径(注意将路径上的数放在一个连续区间里),然后用倍增就可以找到某一区间的Min值啦代码在这里:#include <ios...原创 2018-10-28 20:46:09 · 170 阅读 · 0 评论 -
巡逻-树的直径的3种求法
1.最朴素的求法:枚举每一个点作为起点找到离它最远的那个点(dfs),取每个点的最长路径的max时间复杂度: O(n*n)代码这里不贴咯2.树形dp对于点作为根,它的最长路径是他的最长路径和次长路径的和。所以对数进行树形dp:dp[x][0]->最长, dp[x][1]->次长。dp[x][1]+dp[x][0]即为以此点为根的最长路径。#include ...原创 2018-10-21 22:12:21 · 289 阅读 · 0 评论 -
免费道路
原题链接:https://www.luogu.org/problemnew/show/P3623其实这题贼jb简单,也不知道为啥是省选的。。。就是看尽量用鹅卵石能不能用完。。。再看尽量用水泥能不能用完。。。就没了。。。最小生成树搞一下,记得判断联通就行。。。#include <bits/stdc++.h>using namespace std;const...原创 2018-11-10 22:52:50 · 232 阅读 · 0 评论 -
树上差分:松鼠的新家+最大流usaco+运输计划
2中树上差分:边拆分和点差分边差分:对于x,y之间所有的路径都加上c,相当于把这条路径拆成2条路径:一条从x到lca,另一条从lca到y,注意因为是边的差分,所以这2条路径是没有重叠的。即c[x]++,c[y]++,c[lca(x,y)]-=2;点差分:也是拆分成2条路径,一条是从x到lca,另一条是从y到lca的儿子(同时也是y的祖先),这样就可以保证2条路径没有重叠。即c[x]...原创 2019-09-13 14:42:58 · 245 阅读 · 0 评论 -
noip2017逛公园
题目链接:https://www.luogu.org/problem/P395330分1.SPFA先找最短边2.用dp转移方程 f[x][L]->f[y][L+w(x,y)],求f[n][dis(1,n)-dis(1,n)+k]70分然后我们就发现了dp的状态其实没有那么多。如果中间过程已经超过了k的话,就没有必要继续下去了。即优化:只有dis(1,x)<=L&...原创 2019-07-31 00:07:42 · 217 阅读 · 0 评论 -
一些NOI.AC模拟赛的题
1.小奇挖矿 (一道调了n久的线段树)难点:如何把问题转化成几个可以用线段树修改的问题。于是我们就有了几个函数:update, 区间求和,单点求和,找最后一个某个数i在第几个位置。逐一实现即可较难的就是最后一个操作,我们需要知道min,max才能做到,运用二分的思想。若是一个以x为根的子树里最大的数都小于要求的树,那就舍弃这个子树。若是最小值比这个数要小并最大值比这个数要大,那我们...原创 2019-08-06 22:56:40 · 238 阅读 · 0 评论 -
noip模拟赛10B
题目链接:http://noi.ac/problem/702题意就是每次只能删去叶子节点,有多少种删除方法。对于以x为根一棵树来说,如果我们想要得到这个树的根,我们必须要删去这个树所有的子孙。设f[x]为以x为根删除的方案数,那么考虑他的所有儿子,我们只需要知道每个儿子的子树之间的相对排列关系,(即不考虑组内排序),再乘上确定的一组内的方案数(f[x的儿子])就可以了。没了。#inc...原创 2019-08-14 23:21:34 · 322 阅读 · 0 评论 -
lca的题
1.lca模板 洛谷P3379 https://www.luogu.org/problem/P33792.How far away HDU:2586 http://acm.hdu.edu.cn/showproblem.php?pid=2586 1)RMQ 2)LCA dep改成权值3.仓鼠找sugar lc...原创 2019-08-16 20:02:26 · 148 阅读 · 0 评论