数据结构
文章平均质量分 76
RWLinno
不经常逛优快云,合作请联系我邮箱rwlinno@gmail.com,个人主页:https://rwlinno.github.io/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【超好懂的比赛题解】暨南大学2023东软教育杯ACM校赛个人题解
title : 暨南大学2023东软教育杯ACM校赛 题解tags : ACM,练习记录。原创 2023-03-26 17:44:26 · 2465 阅读 · 2 评论 -
【ACM程序设计实验】高分课程实验报告分享
title : 【ACM程序设计实验】高分课程实验报告分享 tags : 大学课程结项 date : 2022-7-8 author : Linno笔者本身在ACM集训队训练,这门课是选上了之后教练就不需要我们上课就能拿高分。不过期末还是得花2天写这个报告,里面收录了18道ACM入门经典例题,涵盖了很多知识点,在此分享给大家。使用方式大概就是跟着这个实验报告(pdf是完整版)在vjudge上面找到相应的题目去做,然后这个报告有我亲手提供的解法思路和代码,希望能够帮助到大家学习ACM程序设计这门课。对了,如果原创 2022-07-08 00:46:13 · 446 阅读 · 0 评论 -
【超好懂的比赛题解】2022 年远光杯程序设计竞赛
title : 2022 年远光杯程序设计竞赛 date : 2022-6-2 tags : ACM,题解,练习记录 author : Linno题目链接:https://oj.kexie.club/problems补题进度:9/12「2022 远光杯」三生万物打了个10*10的表,然后发现只需要确定m=1和m=n-1的情况即可。 「2022 远光杯」不只是阶乘没写「2022 远光杯」最长重复子序列没写 「2022 远光杯」两点确定一条直线又可以打表。然后差分一下发现是欧拉函数。结果就是4×sum[n-1]原创 2022-06-02 13:46:58 · 448 阅读 · 0 评论 -
【超好懂的比赛题解】第四届SCPC中南民族大学程序设计竞赛(同步赛)
title : 第四届SCPC中南民族大学程序设计竞赛(同步赛) date : 2022-6-1 tags : ACM,题解,练习记录 author : Linno题目链接:https://ac.nowcoder.com/acm/contest/35624补题进度:13/14按题意模拟一下,注意加粗的字都是很重要的判断跳出的条件。 B-穿越到异世界的我居然在写数学题? 经典题了,枚举一下中间的点,那么这个点连上原点表示的斜率也确定了,看他能在右上角的区域移动出多少条直线,翻过来再做一遍,最后加上x轴y轴的方原创 2022-06-01 15:10:27 · 877 阅读 · 0 评论 -
【算法竞赛学习笔记】网络流基础
title : 网络流基础 date : 2022-3-16 tags : ACM,图论 author : Linno 网络流 网络流是一个有向图模型,其拥有源点和汇点,图上边权称为容量,在不超过容量的情况下源点流出的值最终能从源点流向汇点的多少称为流量。 最大流 在网络流最常见的问题就是最大流,即从源点出发,流出的流量足够多,求能够流入汇点的最大量。下面要介绍用于解决这一问题的Ford-Fulkerson算法。 最大流最小割定理 所谓“割”,就是从网络中去掉某些边后,剩下两个不连通的分别包含源点和汇点.原创 2022-05-31 14:09:02 · 780 阅读 · 0 评论 -
【超好懂的比赛题解】第十六届东北地区大学生程序设计竞赛(正式赛)
title : 第十六届东北地区大学生程序设计竞赛(正式赛) date : 2022-5-30 tags : ACM,题解,练习记录 author : Linno 第十六届东北地区大学生程序设计竞赛(正式赛) 题目链接:https://ac.nowcoder.com/acm/contest/35146 补题进度:6/13 A-Encryption B-Capital Program 拓扑排序,将叶子节点一个个抽离直到剩下k个点即可,答案就是那些抽离结点的最大步数。 //#pragma GCC optim.原创 2022-05-30 22:54:25 · 2153 阅读 · 0 评论 -
【超好懂的比赛题解】“山大地纬杯”第十二届山东省ICPC大学生程序设计竞赛(正式赛)
title : “山大地纬杯”第十二届山东省ICPC大学生程序设计竞赛(正式赛) date : 2022-5-30 tags : ACM,题解,练习记录 author : Linno “山大地纬杯”第十二届山东省ICPC大学生程序设计竞赛(正式赛) 题目链接:https://ac.nowcoder.com/acm/contest/34980 补题进度:6/13 A-Seventeen 如果有4个连续的数可以构造两加两减抵消的情况,因此只要考虑前几项的解即可。 //#pragma GCC optimiz.原创 2022-05-30 22:27:55 · 1738 阅读 · 2 评论 -
【超好懂的比赛题解】第十九届同济大学程序设计竞赛暨高校网络友谊赛
title : 第十九届同济大学程序设计竞赛暨高校网络友谊赛 date : 2022-5-30 tags : ACM,题解,练习记录 author : Linno 第十九届同济大学程序设计竞赛暨高校网络友谊赛 题目链接:https://ac.nowcoder.com/acm/contest/34442 A-盒饭盲盒 直接打表(感觉大家都推了一段时间)得出式子:(n−a)2n2+a2+na\frac{(n-a)^2}{n^2+a^2+na}n2+a2+na(n−a)2 //#pragma GCC opt.原创 2022-05-30 22:09:21 · 971 阅读 · 0 评论 -
【超好懂的数据结构】可持久化数据结构基础/模板
title : 可持久化数据结构基础 date : 2021-10-18 tags : ACM,数据结构 author : Linno 文章目录可持久化数组luoguP3919 【模板】可持久化线段树 1(可持久化数组)可持久化并查集luoguP3402 可持久化并查集可持久化TrieluoguP4735 最大异或和可持久化线段树P3834 【模板】可持久化线段树 2可持久化平衡树P5055 【模板】可持久化文艺平衡树参考资料 可持久化数组 luoguP3919 【模板】可持久化线段树 1(可持久化数组.原创 2022-05-17 12:03:11 · 523 阅读 · 0 评论 -
【算法竞赛学习笔记】KD-Tree
title : KD-Tree date : 2022-4-7 tags : ACM,数据结构 author : Linno K-D tree K-D树是在k维欧几里得空间中组织点的数据结构。在算法竞赛中,K-D树往往用于在二维平面内的信息检索。具体应用如:多维键值搜索(范围搜索及最邻近搜索)下面我们针对二维平面的KD-Tree进行讲解。 定义 K-D Tree是一颗存储k维信息的二叉树,代表对数据集合的划分,每个结点都对应着一个k维超矩形区域。 ①在一维数据情况下,KD-Tree是一颗二叉搜索树。 ②.原创 2022-04-08 15:05:46 · 1559 阅读 · 0 评论 -
【ACM刷题记录】线段树杂题其一
title : 线段树杂题 date : 2021-11-14 tags : ACM,数据结构 author : Linno 区间子段和 每次询问在序列的[x1,y1]中选L,[x2,y2]中选R,使得子段和[L,R]最大每次询问在序列的[x1,y1]中选L,[x2,y2]中选R,使得子段和[L,R]最大每次询问在序列的[x1,y1]中选L,[x2,y2]中选R,使得子段和[L,R]最大 SP2916 GSS5 - Can you answer these queries V #include<i.原创 2022-02-18 17:03:14 · 796 阅读 · 0 评论 -
【算法竞赛学习笔记/数据结构】平衡树专题之FHQ Treap
title : 平衡树之FHQ Treap date : 2021-11-23 tags : ACM,数据结构 author: Linno 平衡树之FHQ Treap 前置芝士 BST 平衡树的基本概念 Treap “Treap=BST+Heap” 它整体是拥有BST的性质的,但每一个节点都有一个附加权值,它的附加权值符合堆的性质。因此树的形态以及平衡与否都是由这个附加权值来决定的。而这个权值是随机选取的,因此这棵树大概平衡。 FHQ Treap 普通的Treap很难实现恼人的旋转。FHQ Treap应.原创 2022-02-07 23:33:55 · 931 阅读 · 0 评论 -
【算法竞赛学习笔记】Link-Cut-Tree基础-超好懂的数据结构
titile : Link-Cut-Tree time : 2021-7-21 tags : ACM,数据结构 author : Linno 前置芝士 树链剖分 平衡树(splay即可) 适用范围 1、链上求和 2、链上求最值 3、链上修改 4、子树修改 5、子树求和 (上述五种均可用树链剖分解决) 6、换根 7、断开树上的一条边 8、连接两个点,保证连接后仍然是一棵树 思想 对每个结点所连的边都分实边和虚边。一个结点最多连出一条向儿子的实边,因此实边会聚集成链。 splay维护一条实链。 性质 所有.原创 2021-11-17 22:05:03 · 831 阅读 · 0 评论 -
【算法竞赛学习笔记】dfs序与树链剖分-超有用的图论详解
title : dfs序与树链剖分 date : 2021-8-12 tags : 图论,ACM author : Linno 支持操作 在子树上或者是两点路径上的所有节点的求和、修改、查询等操作。 具体操作大致为: (1)dfs进行树链剖分处理节点信息; (2)根据dfs序把树拉直然后套数据结构。 dfs序 把树搞成了“连续的”。 一个节点的子树上的节点的时间戳,一定大于这个节点的时间戳且连续。 某些链上的时间戳也是连续的。 因为dfs序的性质——重链上的时间戳是连续的。 树链剖分 重链剖分——常用.原创 2021-11-06 17:17:13 · 390 阅读 · 0 评论 -
【算法竞赛学习笔记】树上问题基础-超有用的图论详解
title :树上问题基础 tags : ACM,图论 date : 2021-11-6 author : Linno 基本概念 树的深度:从树根往下数,叶子节点所在的最大层数称为树的深度。(有教材定义不一样,看题意吧。要区分高度) 树的直径:树中两节点距离的最大值称为树的直径。 子树大小:对每一个节点的大小都等于左子树大小+右子树大小+1(自己) 节点重量:删去该节点后,所有树大小的最大值。即该节点所有子树大小的最大值称为节点重量。 求树的直径 做法1:两遍dfs const int N = 1000.原创 2021-11-06 17:04:48 · 799 阅读 · 0 评论 -
【算法竞赛学习笔记】用不着数据结构之珂朵莉树
title : 珂朵莉树 date : 2021-8-26 tags : ACM,数据结构 author :Linno 简介 珂朵莉树(Chthlly Tree)也叫老司机树,ODT(Old Driver Tree)。 只要是由区间赋值操作的数据结构都可以使用这种数据结构来骗分,在数据随机的情况下效率很高。对于add,assign和sum操作,用set实现的珂朵莉树复杂度位O(nloglogn)。 问题起源 [CF 896C]n个数m次操作: ①区间加一个数、 ②区间赋值 ③求区间第k小 ④求区间幂次和.原创 2021-10-30 20:54:48 · 512 阅读 · 0 评论 -
【算法竞赛学习笔记】Bitset详解和应用
title : bitset date : 2021-8-20 tags : ACM,数据结构 author : Linno Bitset bitset是一种类似数组的数据结构,它的每一个元素只能是0或1,每个元素只用1bit的空间。可以使用只包含‘0’或‘1’的字符串构造。 优点 支持所有的位运算。 空间占用非常小,也可用于优化时间。 声明方式 #include<bitset> bitset<30>bi; string s="100101"; bitset<10>.原创 2021-10-31 01:21:43 · 2702 阅读 · 0 评论 -
【超好懂的数据结构】可持久化线段树/主席树 详解~(update:11/12)
title : 主席树 date : 2021-8-18 tags : 数据结构,ACM author : Linno 主席树 学名为可持久化线段树,可以用来解决线段树存储历史状态的问题。 我们在进行单点修改后,线段树只有logn个(一条链)的节点被修改,我们可以让修改后的树与修改前的树共享节点,节省时间和空间。 在学习主席树之前,我们先引入三个前置知识:离散化、动态开点,权值线段树。 离散化 对于较大的数据范围,只要将关键点记录下来,记录下rank,就能把数据缩小到可以接受的范围,以便建立线段树或其他.原创 2021-10-29 00:52:21 · 876 阅读 · 0 评论 -
【算法竞赛学习笔记】pb_ds-超好懂的数据结构
title : pb_ds date : 2021-8-21 tags : ACM,数据结构 author : Linno 简介 pb_ds库全称Policy-Based Data Structures。 封装了很多数据结构入哈希表、平衡二叉树、字典树、堆等。 哈希表 声明方式 #include<ext/pb_ds/assoc_container.hpp> #include<ext/pb_ds/hash_policy.hpp> using namespace __gnu_pb.原创 2021-10-29 00:39:28 · 2638 阅读 · 0 评论 -
【算法竞赛学习笔记】用不着数据结构之zkw线段树
title : zkw线段树 date : 2021-8-29 tags : ACM,数据结构 author : Linno 如果没有接触过线段树的同学,可以看一下这篇博客: https://blog.youkuaiyun.com/SC_Linno/article/details/120971169 简介 zkw线段树是一种改良的非递归式的线段树,发明人张昆玮。 zkw线段树有如下优点:(1)代码简短;(2)非递归;(3)常数小。 缺点:不是很灵活。 操作 建树 自底向上建树。输入了叶子节点的信息任何再一路向上传.原创 2021-10-29 00:27:53 · 701 阅读 · 0 评论 -
【算法竞赛学习笔记】树状数组基础-超好懂的数据结构
title : 树状数组 tags : 数据结构 date : 2021-7-22 核心操作 int lowbit(x){return x&(-x);} //你也可以写成下述形式 #define lowbit(x) (x&-x) 意义在于取出x最低为的1。 一维树状数组 单点修改+区间查询 void update(int x,int y){ //将x点加上y for(int i=x;i<=n;i+=lowbit(i)) c[i]+=y; } int g.原创 2021-10-31 01:22:07 · 264 阅读 · 0 评论 -
【算法竞赛学习笔记】STL-超好懂的数据结构!!!
title : 基础数据结构及STL date : 2021-8-17 tags : 数据结构 向量(vector) 叫动态数组或者变长数组应该都可以的。 特点:非常重要的数据结构,即有数组性质,也能很方便的完成离散化等操作 声明方法 ①vector<数据类型>向量名(向量长度) ②vector<数据类型>向量名 ③vector<数据类型>向量名(向量长度,初始化值) 基本操作 push_back(x)//将x添加至末尾 pop_back()//删除最后一个数 fr.原创 2021-10-26 14:20:22 · 233 阅读 · 0 评论 -
【超好懂的数据结构】线段树基础~(update:11/13)
title : 线段树 date : 2021-8-15 tags : ACM,数据结构 线段树 线段树基础 首先上个板子来复习一下线段树的基本写法。 //基础板 P3372 【模板】线段树 1 #include<bits/stdc++.h> using namespace std; int n,m,l,r,k,q; long long arr[100005],tree[270000],lazy[270000]; void build(int node,int l,int r){ /.原创 2021-10-26 14:17:09 · 393 阅读 · 0 评论 -
【算法竞赛学习笔记】二叉搜索树(BST)-超好懂的数据结构!!!
title : 二叉搜索树 date : 2021-8-3 tags : ACM,数据结构 二叉搜索树 BST(Binary Search Tree),二叉搜索树,又叫二叉排序树。 他的结构不像二叉堆一样可控,有时会被卡成O(n2)O(n^2)O(n2)的操作复杂度(想象成一条链)。但掌握二叉搜索树相对于打开了平衡树的大门。掌握BST,有利于对Splay、替罪羊树等高效率的平衡树数据结构的学习。 性质 1.若左子树不为空,则左子树上的所有节点的值均小于父节点的值。 2.若右子树不为空,则右子树上的所有.原创 2021-10-26 14:14:17 · 360 阅读 · 0 评论 -
【算法竞赛学习笔记】堆-超好懂的数据结构!!!
title : 堆 date : 2021-8-3 tags : ACM,数据结构 什么是堆 堆是一棵具有特定性质的二叉树,堆的基本要求是堆中所有结点的值必须大于等于(或小于等于)其孩子结点的值,这也称为堆的性质。堆还有另一个性质,就是当h>0时,所有叶子结点都处于第h或h-1层,也就是说,堆应该是一棵完全二叉树。 堆的类型 大顶堆:顾名思义大的元素在顶部 小顶堆:顾名思义小的元素在顶部 堆的操作 上浮节点 void checkup(int node) //与父节点比较向上更新 { if (.原创 2021-10-26 14:11:50 · 213 阅读 · 0 评论 -
【算法竞赛学习笔记】配对堆与左偏树-超好懂的数据结构!!!
title : 配对堆与左偏树 date : 2021-8-22 tags : 数据结构,ACM 配对堆 简介 配对堆(pairing heap),支持插入,查询/删除最小值,合并,修改等操作,跑得比较快,但不能可持久化。 操作 合并 直接把根节点权值较大的那个配对堆设成另一个的儿子即可。 插入 新元素可视为一个配对堆,与原堆合并即可。 删除最小值(复杂) 若把根节点的儿子都一个个合并到一起,复杂度会退化到O(n) Eileen保证均摊复杂度为O(logn),我们需要把儿子从左往右两两配对。 Node.原创 2021-10-26 14:09:05 · 643 阅读 · 0 评论 -
【ACM练习记录】DP题型详解——2021JNU寒假训练营D2
title : 2021JNU寒假训练营Day2 tags : ACM,练习记录 date : 2021-9-19 author : Linno 题目链接:https://vjudge.net/contest/417488#overview 考察内容:动态规划 题目都比较简单,只要会写板子就行。 A-拦截导弹 思路 在数据量不大的情况下,用dp[i]表示前i个导弹最多能拦截多少个。 枚举i前面j个数,列出转移式dp[i]=max(dp[i],dp[j]+1)dp[i]=max(dp[i],dp[j]+1.原创 2021-10-26 13:32:10 · 462 阅读 · 0 评论 -
【ACM练习记录】数据结构题型详解——2021JNU寒假训练营D1
title : 2021JNU寒假训练营Day1 tags : ACM,练习纪录 date : 2021-9-18 author : Linno 题目链接:https://vjudge.net/contest/417319#overview 考察内容:基本数据结构 榜有点歪,像第二题这么简单居然没人做。 题目不难均可做,需要熟悉STL的用法。 A-queue 思路 对于先进的队伍是优先输出的,并且每次插入要先查看元素所属的队伍是否存在队列中。我们开一个map记录每个元素所属的队伍,然后再开两个队列。其中.原创 2021-10-26 13:29:49 · 464 阅读 · 0 评论
分享