图论
文章平均质量分 79
axtices
这个作者很懒,什么都没留下…
展开
-
线段树-模板
树状数组and线段树感悟:1.了解线段树2.区间修改,查询 以及建树来一道题目理解理解:洛谷题目链接线段树视频讲解配有代码详解题意:题意很简单,给一a数组,对a数组有两种操作1,和2,输出操作2的结果.1 x y k:将区间 [x, y][x,y] 内每个数加上 k。2 x y:输出区间 [x, y][x,y] 内每个数的和。思路: 线段树的区间修改和区间查询。简单介绍一下线段树:用一tree数组存放每个a数组一个区间和的值。 下面拿一张图直观了解下线段树的大致模样。tr原创 2020-12-20 16:20:49 · 58 阅读 · 1 评论 -
题-芭芭拉冲鸭~(续)(LCA最近公共祖先)
LCA算法求解最近公共祖先北京信息科技大学:J题题目链接树感悟:1.加深dfs的印象2.LCA算法(最近公共祖先)3.倍增4.ar数组的巧妙题意:芭芭拉这次来到了一棵字母树,这同样是一棵无根树,每个节点上面有一个小写字母。芭芭拉想知道,自己从x冲刺到y,从x走到y收集所有字母,选择其中一部分字母组成一个回文串,这个回文串的最大长度是多少?啥意思呢,简单的讲走过的路不能再走的意思咯,而且注意了,从x到y的路径是唯一的,因为是树型结构。(脑海里想象后者画几个树验证一下,就明白是唯一的了原创 2020-11-25 00:54:08 · 1141 阅读 · 0 评论 -
《算法竞赛进阶指南》------图论篇3
文章目录0x14 岛屿(基环树直径+拓扑排序+树的直径)0x14 岛屿(基环树直径+拓扑排序+树的直径)岛屿题意:n个岛屿,n座桥。问基环森立直径之和。思路:用BFS遍历,找出每一个基环树,用拓扑排序求出环上的子树的直径,和环上点的集合,顺便得到该环的点为根的树,以根为起点的最长链。再用双指针和优先队列求基环树直径。ACcode详解:#include<bits/stdc++.h>#define ll long long#define ld long double#defin原创 2021-12-24 17:34:12 · 782 阅读 · 0 评论 -
《算法竞赛进阶指南》------图论篇0
文章目录0x01 Telephone Lines POJ - 36620x02 P1073 [NOIP2009 提高组] 最优贸易0x03 道路和航线 BZOJ22000x04 Sorting It All Out POJ - 1094 topo0x05 Sightseeing trip POJ - 1734 最小环问题0x06 Cow Relays POJ - 3613 S到E经过k条边的最短路0x07 走廊泼水节 (Kruskal)0x01 Telephone Lines POJ - 3原创 2021-12-23 10:39:53 · 435 阅读 · 0 评论 -
《算法竞赛进阶指南》------图论篇2
文章目录0x0E 雨天的尾巴 洛谷p4556(线段树合并+树上差分+树链lca)0x0E 雨天的尾巴 洛谷p4556(线段树合并+树上差分+树链lca)雨天的尾巴详细视频讲解题意:一个由n座房屋形成的树状结构,然后救济粮分 mmm 次发放,每次选择两个房屋 (x,y)(x, y)(x,y),然后对于 xxx 到 yyy 的路径上(含 xxx 和 yyy)每座房子里发放一袋 zzz 类型的救济粮。然后深绘里想知道,当所有的救济粮发放完毕后,每座房子里存放的最多的是哪种救济粮。输入:输入n−1n原创 2021-12-21 17:15:29 · 1306 阅读 · 0 评论 -
2021CCPC Jumping Monkey(并查集)
文章目录题意思路官方题解传送门 Jumping Monkey题意在一颗树上,以k节点起始,能跳到v节点,然后接着跳。能跳 需满足条件:在k到v的最短路径上v节点点权最大。问以u节点起始,能跳跃的最多多少个节点。思路并查集, 反向思考,从权值最小的开始枚举。官方题解ACcode#include<bits/stdc++.h>#define ll long long#define ld long double#define ull unsigned long long#de原创 2021-10-11 00:33:22 · 206 阅读 · 0 评论 -
《算法竞赛进阶指南》------图论篇1
文章目录0x01 Telephone Lines POJ - 36620x01 Telephone Lines POJ - 3662Telephone Lines 题意:从1到N修一条电缆,有p对电线杆之间是可以连接的,电信公司可以提供k条电缆,其他的由John提供,求john提供的电缆的最长的那根的长度(ret)。思路:实则是求最短最长的边。二分结果(sum)。对于 边值>sum, 电信公司需要提供电缆。用djk 计算 1->n 路径上的最短路径。 满足d[n]< k原创 2021-09-29 18:49:13 · 340 阅读 · 0 评论 -
Hash表,类似map用法
学习目标: 掌握hash表学习时间:提示:这里可以添加计划学习的时间例如:1、 周一至周五晚上 7 点—晚上9点2、 周六周日下午 12 点-17 点学习产出:#include<iostream>#include<cstring>using namespace std;#define ll long long#define MOD 1000007#define Maxn 5000010ll val[Maxn];ll nxt[Maxn];ll原创 2020-10-19 20:14:57 · 143 阅读 · 0 评论 -
关于我会不会dfs这档子事(题:Connect,Game Map)
2021年度训练联盟热身训练赛第四场 补题connect:好想难实现Game Map:难想好实现共同点都是dfs。总结1.第一种dfs:常规遍历void dfs(int x,int y,int flag){ a[x][y]=flag; for(){ dfs(i,j,flag); } a[x][y]=0;}2.第二种dfs:满足条件直接退出(不再往下走)后面题目Connect3的下棋:就是这么dfs。如果胜利就结束(当前状态)void dfs(int x,int原创 2021-03-30 19:54:49 · 96 阅读 · 0 评论 -
题-J. Burnished Security Updates(二分图)
二分图定义与判定在做这道题时,首先我们先了解二分图的基本概念。二分图定义:将图里的顶点分为两个集合,且集合内的点没有直接关联(也就是同一集合里的点不相连).二分图性质上图就是一个二分图,将图的所有顶点分为u,v集合. u,v集合互不相连.我们先从二分图的性质出发:1.能形成回路的:其回路长度必然是偶数。2.不能形成回路的:无要求3.不管从什么点出发必然都是u-v v-u (或者:v-u u-v)这样来回循环。 也就是一个点的左右邻边是与他相对的集合里的点。从上图我可以发现有以下特点:原创 2021-03-27 11:40:27 · 142 阅读 · 0 评论 -
单源点最短路径-迪杰,优先队列
迪杰特斯拉,优先队列总结:1.图论之一:迪杰特斯拉算法—联想(结构体edge, 结构体node,访问点标记vis,最短距离arr数组).贪心策略:先贪目前的最短的路径,确定下一个点的最短距离,然后再从目前的确定的路径中选出最短路径,依次这样所以用到优先队列.2. 优先队列(priotity_queue),队头top(), 默认排序从大到小. 参考内容普通队列(queue) 队头front(). 根据先后进队顺序排放。3.结构体内比较在优先队列内比较恰恰相反。单源点最短路径想法,原理:原创 2021-02-23 17:05:54 · 344 阅读 · 1 评论 -
芭芭拉冲鸭~(dfs树两点最大距离)
树上两节点的最大距离牛客网:题目链接:感悟:1.dfs的再理解,对树的遍历,用深度标记到根节点的距离。2.树两点的最大距离的求解。题意:给定一棵无根树,树上每个节点被染成了红色或绿色或蓝色。(R=红色,G=绿色,B=蓝色)一条边两个节点的颜色不同芭芭拉才能冲刺(即能形成一条边),问芭芭拉在这一颗树上能冲刺的最远距离(不能重复经过一条边) 重点喔思路:实际是求树上两节点的最大距离,由于颜色相同的节点芭芭拉不能通过,就会使得树分割成多颗树,保留根节点和子节点,用dfs遍历树的最大和原创 2020-11-22 18:33:03 · 1916 阅读 · 0 评论 -
题-Grid with Arrows(并查集+欧拉图)
并查集B - Grid with Arrows题意:在n行m列网格,输入r-右,l-左,u-上,d-下,的字符,在之后n行分别是每个坐标位置的移动的步数。问是否存在合适的点,该点一条路径能够经过所有点恰好一次。思路:实际上这是一道图题而且每个点的出度为1或者0(0情况是移动超出网格)不妨对每个坐标点位置用一个数字(点)表示,(i,j)可表示点(i-1)*m+j;如(6,2)对应 点为52(9行10列)。如果存在该点,前提条件是图是连通图。如果是连通图,只要考虑能否一点经过剩下所有点。由于出度原创 2020-10-10 13:20:25 · 577 阅读 · 0 评论 -
割点(tarjan算法)
割点(无向图).题目链接:洛谷tarjan遍历过程视频链接心得:1.图用dfs的遍历2.Tarjan算法求非强连通图。3.在dfs中如何加东西:dfs(i)后面语句怎么写?每次dfs完成后,就是对前面的影响,像栈一样。割点的定义:在一个无向图里,一个顶点去掉,及其去掉该点的所有边,剩下的图不连通。下图的无向图的割点为:0,3。ps:下图实际是无向图,把指向的箭头去掉哈,就成了无向图。代码如下:#include<iostream>#include<vecto原创 2020-11-10 16:05:11 · 7936 阅读 · 1 评论 -
题—送外卖2(最短路径&&dfs)
送外卖2图论,动态规划,BFS,弗洛里德算法牛客网:送外卖2 题意ps: 2号代码解释 下次一定(滑稽);n个点,m条有向边,q个外卖点。q个外卖点信息 卖家位置,顾客位置,卖家做好的时间,顾客要求的时间送达不管时间,问能送达的最大的外卖的点数。1-------------------代码如下:使用BFS解决#include<iostream>#include<cstring>using namespace std;int read(){ in原创 2020-10-27 15:21:58 · 2521 阅读 · 0 评论 -
弗洛里德算法
三重for循环实现图任意两点最短路径#include<iostream>using namespace std;#define rep(i,a,b) for(int i=a;i<=b;i++)const int INF=50;int n,m; //适用于n<=10int a[11][11];int main (){ cin>>n>>m; rep(i,1,n) rep(j,1,n){ if(i==j) a[i原创 2020-10-20 14:24:29 · 644 阅读 · 0 评论 -
萌新の——迪杰特斯拉
迪杰特斯拉#include<iostream>#include<queue>using namespace std;const int maxn = 1e5+10;const int INF = 1e9;struct edge{ int from,to,value; edge(int a,int b,int c){ from =a; to= b; value = c; }};vector<edge> e[maxn];int pre[原创 2020-10-19 20:13:16 · 121 阅读 · 0 评论