
数据结构
Limhuang
这个作者很懒,什么都没留下…
展开
-
字典树模板
这个数据结构的查询和插入都是O(n)的时间复杂度。原创 2023-02-11 23:08:24 · 158 阅读 · 0 评论 -
莫队算法模板(普通莫队+带修改莫队)
也因为其本质上是对暴力法的优化,所以在思考问题的时候我们也只需要按照暴力法的思路去想就行了,在OI赛制中。只是比普通莫队多加了一个时间轴t,当指针l,r与查询区间重合,并且t与当前查询的时间戳相同时才认为这个答案是正确的。移动指针的常数压缩(在下面代码中未做修改,这里的优化要视题目情况而定)对于左端点在同一奇数块的区间,右端点按升序排列,反之降序。非常好使,在开启o2优化的情况下可以轻松过1e6的数据。说明:数据加强了,会卡莫队,只能过一半的测试点。块的大小取n^2/3时性能达到最优。原创 2023-02-10 17:48:15 · 288 阅读 · 0 评论 -
19040 序列合并
有两个长度都是N的序列A和B,在A和B中各取一个数相加可以得到N^2个和,求这N^2个和中最小的N个。输入格式第一行一个正整数N;1<=N<=100000第二行N个整数Ai;第三行N个整数Bi;输出格式输出仅一行,包含N个整数,从小到大输出这N个最小的和,相邻数字之间用空格隔开。输入样例3 2 6 6 1 4 8输出样例3 6 7可以先对这两个数组a、b排序,排完序后满足以下关系:a原创 2022-06-07 13:23:00 · 203 阅读 · 0 评论 -
图的最小生成树
输入示例:7 121 2 91 5 21 6 32 3 52 6 73 4 63 7 34 5 64 7 25 6 35 7 66 7 1输出示例:16库鲁斯卡尔算法(用并查集)#include<iostream>#include<algorithm>#include<sstream>#include<math.h>#include<vector>#include<queue>#i原创 2022-05-20 17:12:06 · 76 阅读 · 0 评论 -
c++希尔排序
#include<iostream>#include<algorithm>#include<sstream>#include<math.h>#include<vector>#include<queue>#include<list>#include<map>#include<set>#include<string>#include<stdio.h>#inc.原创 2022-05-11 11:45:13 · 76 阅读 · 0 评论 -
c++快排
#include<iostream>#include<algorithm>#include<sstream>#include<math.h>#include<vector>#include<queue>#include<list>#include<map>#include<set>#include<string>#include<stdio.h>#inc.原创 2022-05-10 12:49:05 · 678 阅读 · 0 评论 -
8645 归并排序(非递归算法)
Description用函数实现归并排序(非递归算法),并输出每趟排序的结果输入格式第一行:键盘输入待排序关键的个数n第二行:输入n个待排序关键字,用空格分隔数据输出格式每行输出每趟排序的结果,数据之间用一个空格分隔输入样例105 4 8 0 9 3 2 6 7 1输出样例4 5 0 8 3 9 2 6 1 70 4 5 8 2 3 6 9 1 70 2 3 4 5 6 8 9 1 70 1 2 3 4 5 6 7 8 9 既然归并...原创 2022-05-08 17:46:59 · 631 阅读 · 1 评论 -
8644 堆排序
Description用函数实现堆排序,并输出每趟排序的结果输入格式第一行:键盘输入待排序关键的个数n第二行:输入n个待排序关键字,用空格分隔数据输出格式第一行:初始建堆后的结果其后各行输出交换堆顶元素并调整堆的结果,数据之间用一个空格分隔输入样例105 4 8 0 9 3 2 6 7 1输出样例9 7 8 6 4 3 2 5 0 18 7 3 6 4 1 2 5 0 97 6 3 5 4 1 2 0 8 96 5 3 0 4 1 2 7 8原创 2022-05-08 15:49:09 · 895 阅读 · 0 评论 -
c++并查集生成方法
并查集查找的速度非常快,同时也能反映数据之间的关系。下面着重介绍并查集的生成方法一开始先初始化,使得每一个节点的父亲都是他本身。然后要如何体现他们之间的关系呢?这时就要写一个函数,这个函数接受两个参数a,b,然后找到a与b的父亲,令a的父亲=b的父亲(反之也可),这样a,b就在一起了,都归b或者a的父亲管。但是,这样写会造成一个问题,树很容易退化成链表,使得效率大大降低,树层数太大,例如:我要找到a的父亲,如果当前父亲的父亲不等于他自身,那么路径最差可能是这样的:a->b的父亲-&原创 2022-04-19 17:45:52 · 399 阅读 · 0 评论 -
19083 二叉树的最长路径
19083 二叉树的最长路径时间限制:1000MS 代码长度限制:10KB提交次数:0 通过次数:0题型: 编程题 语言: 不限定Description二叉树中,任意两个节点间都存在一条唯一的路径,请求出所有路径中最长的路径长度。输入格式第一行为一个整数n,表示结点个数,结点以数字编号,根节点为1。n<10第二行为一个数字和#号组成的字符串,采用完全二叉树的存储形式,#表示空树。输出格式输出所有路径中最长的路径长度输入样例51234##5.原创 2022-04-17 22:10:33 · 1289 阅读 · 0 评论 -
腾讯2020校园招聘-后台 第一题 压缩算法
小Q想要给他的朋友发送一个神秘字符串,但是他发现字符串的过于长了,于是小Q发明了一种压缩算法对字符串中重复的部分进行了压缩,对于字符串中连续的m个相同字符串S将会压缩为[m|S](m为一个整数且1<=m<=100),例如字符串ABCABCABC将会被压缩为[3|ABC],现在小Q的同学收到了小Q发送过来的字符串,你能帮助他进行解压缩么?原创 2022-04-15 16:40:37 · 201 阅读 · 0 评论 -
LCA最近公共祖先算法
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例 1:输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出:3解释:节点 5 和节点 1 的最近公共祖先是节点 3 。代码:class Solution {publi原创 2022-04-14 13:02:43 · 531 阅读 · 0 评论