
算法学习
文章平均质量分 62
努力学习的蒟蒻
这个作者很懒,什么都没留下…
展开
-
树的直径的求法
从直径一端p出发进行dfs/bfs,dist[i]表示p到i的路径长度,那么dist最大的点就是q,此时dist[q]就是直径长度,所以已知p就可以求出q。给定一颗树,树的每条边都有一个权值, 树中任意两点都有一条唯一的简单路径,路径长度为连接两点的路径上的边权之和,路径长度最长的一条为。从任意点出发,找到距离出发点最远的节点,该节点就是p。一般使用两种方法求直径:两次dfs/bfs、树形dp,时间复杂度都为O(n)。思路:由于树上任意两点都有唯一的路径,用p、q表示直径的两个端点。原创 2023-01-27 15:23:32 · 1064 阅读 · 1 评论 -
并查集模板及题目
1.什么是并查集 并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这一类问题近几年来反复出现在信息学的国际国内赛题中。其特点是看似并不复杂,但数据量极大,若用正常的数据结构来描述的话,往往在空间上过大,计算机无法承受;即使在空间上勉强通过,运行的时间复杂度也极高,根本就不可能在比赛规定的运行时间(1~3秒)内计算出试题需要的结果,只能用并查集来描述。 并查集是一种树型的数据结原创 2021-11-22 19:36:42 · 305 阅读 · 0 评论 -
矩阵快速幂及斐波那契数列
1.通用模板:矩阵快速幂 前几天写过一篇矩阵快速幂的一种解法,但是当时只是初学,所以用了当时我更好理解的方法去做。那个解法需要调用两个很相像的函数,而且容易造成紊乱,也不利于矩阵快速幂的推广,所以在观摩了其他大佬的代码后对之前的代码进行了改进。 先把题目贴出来: 题目背景 矩阵快速幂 题目描述 给定 n×n的矩阵A,求。 输入格式 第一行两个整数n,k接下来n行,每行n个整数,第i行的第j的数表示。 输出格式 输出A^kAk 共nn行,每行nn个数...原创 2021-11-04 22:46:48 · 416 阅读 · 0 评论 -
矩阵快速幂
思路: 1.重载矩阵运算符,定义矩阵乘法或者重载矩阵 2.按照快速幂的思想,循环计算或者递归计算 注意点:表示结果的矩阵要定义为单位矩阵 不使用重载: #include<iostream> #include<algorithm> #include <map> #include <unordered_map> #include <queue> #include<cstdio> #include<string> us原创 2021-10-30 15:23:18 · 88 阅读 · 0 评论 -
算法学习:ST表
在初学阶段为了更好地理解st表写了这篇博客。 相关题目: 链接:P3865 【模板】ST 表 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目背景 这是一道 ST 表经典题——静态区间最大值 请注意最大数据时限只有 0.8s,数据强度不低,请务必保证你的每次查询复杂度为O(1)O(1)。若使用更高时间复杂度算法不保证能通过。 如果您认为您的代码时间复杂度正确但是 TLE,可以尝试使用快速读入: inline int read() { int x=0,f=1...原创 2021-12-07 19:45:41 · 600 阅读 · 0 评论