
数据结构
文章平均质量分 76
RWLinno
不经常逛优快云,合作请联系我邮箱rwlinno@gmail.com,个人主页:https://rwlinno.github.io/
展开
-
【超好懂的比赛题解】暨南大学2023东软教育杯ACM校赛个人题解
title : 暨南大学2023东软教育杯ACM校赛 题解tags : ACM,练习记录。原创 2023-03-26 17:44:26 · 2238 阅读 · 2 评论 -
【ACM程序设计实验】高分课程实验报告分享
title : 【ACM程序设计实验】高分课程实验报告分享tags : 大学课程结项date : 2022-7-8author : Linno笔者本身在ACM集训队训练,这门课是选上了之后教练就不需要我们上课就能拿高分。不过期末还是得花2天写这个报告,里面收录了18道ACM入门经典例题,涵盖了很多知识点,在此分享给大家。使用方式大概就是跟着这个实验报告(pdf是完整版)在vjudge上面找到相应的题目去做,然后这个报告有我亲手提供的解法思路和代码,希望能够帮助到大家学习ACM程序设计这门课。对了,如果原创 2022-07-08 00:46:13 · 334 阅读 · 0 评论 -
【超好懂的比赛题解】2022 年远光杯程序设计竞赛
title : 2022 年远光杯程序设计竞赛date : 2022-6-2tags : 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 · 349 阅读 · 0 评论 -
【超好懂的比赛题解】第四届SCPC中南民族大学程序设计竞赛(同步赛)
title : 第四届SCPC中南民族大学程序设计竞赛(同步赛)date : 2022-6-1tags : ACM,题解,练习记录author : Linno题目链接:https://ac.nowcoder.com/acm/contest/35624补题进度:13/14按题意模拟一下,注意加粗的字都是很重要的判断跳出的条件。B-穿越到异世界的我居然在写数学题?经典题了,枚举一下中间的点,那么这个点连上原点表示的斜率也确定了,看他能在右上角的区域移动出多少条直线,翻过来再做一遍,最后加上x轴y轴的方原创 2022-06-01 15:10:27 · 752 阅读 · 0 评论 -
【算法竞赛学习笔记】网络流基础
title : 网络流基础date : 2022-3-16tags : ACM,图论author : Linno网络流网络流是一个有向图模型,其拥有源点和汇点,图上边权称为容量,在不超过容量的情况下源点流出的值最终能从源点流向汇点的多少称为流量。最大流在网络流最常见的问题就是最大流,即从源点出发,流出的流量足够多,求能够流入汇点的最大量。下面要介绍用于解决这一问题的Ford-Fulkerson算法。最大流最小割定理所谓“割”,就是从网络中去掉某些边后,剩下两个不连通的分别包含源点和汇点.原创 2022-05-31 14:09:02 · 603 阅读 · 0 评论 -
【超好懂的比赛题解】第十六届东北地区大学生程序设计竞赛(正式赛)
title : 第十六届东北地区大学生程序设计竞赛(正式赛)date : 2022-5-30tags : ACM,题解,练习记录author : Linno第十六届东北地区大学生程序设计竞赛(正式赛)题目链接:https://ac.nowcoder.com/acm/contest/35146补题进度:6/13A-EncryptionB-Capital Program拓扑排序,将叶子节点一个个抽离直到剩下k个点即可,答案就是那些抽离结点的最大步数。//#pragma GCC optim.原创 2022-05-30 22:54:25 · 1863 阅读 · 0 评论 -
【超好懂的比赛题解】“山大地纬杯”第十二届山东省ICPC大学生程序设计竞赛(正式赛)
title : “山大地纬杯”第十二届山东省ICPC大学生程序设计竞赛(正式赛)date : 2022-5-30tags : 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 · 1546 阅读 · 2 评论 -
【超好懂的比赛题解】第十九届同济大学程序设计竞赛暨高校网络友谊赛
title : 第十九届同济大学程序设计竞赛暨高校网络友谊赛date : 2022-5-30tags : ACM,题解,练习记录author : Linno第十九届同济大学程序设计竞赛暨高校网络友谊赛题目链接:https://ac.nowcoder.com/acm/contest/34442A-盒饭盲盒直接打表(感觉大家都推了一段时间)得出式子:(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 · 885 阅读 · 0 评论 -
【超好懂的数据结构】可持久化数据结构基础/模板
title : 可持久化数据结构基础date : 2021-10-18tags : ACM,数据结构author : Linno文章目录可持久化数组luoguP3919 【模板】可持久化线段树 1(可持久化数组)可持久化并查集luoguP3402 可持久化并查集可持久化TrieluoguP4735 最大异或和可持久化线段树P3834 【模板】可持久化线段树 2可持久化平衡树P5055 【模板】可持久化文艺平衡树参考资料可持久化数组luoguP3919 【模板】可持久化线段树 1(可持久化数组.原创 2022-05-17 12:03:11 · 409 阅读 · 0 评论 -
【算法竞赛学习笔记】KD-Tree
title : KD-Treedate : 2022-4-7tags : ACM,数据结构author : LinnoK-D treeK-D树是在k维欧几里得空间中组织点的数据结构。在算法竞赛中,K-D树往往用于在二维平面内的信息检索。具体应用如:多维键值搜索(范围搜索及最邻近搜索)下面我们针对二维平面的KD-Tree进行讲解。定义K-D Tree是一颗存储k维信息的二叉树,代表对数据集合的划分,每个结点都对应着一个k维超矩形区域。①在一维数据情况下,KD-Tree是一颗二叉搜索树。②.原创 2022-04-08 15:05:46 · 1402 阅读 · 0 评论 -
【ACM刷题记录】线段树杂题其一
title : 线段树杂题date : 2021-11-14tags : 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 · 681 阅读 · 0 评论 -
【算法竞赛学习笔记/数据结构】平衡树专题之FHQ Treap
title : 平衡树之FHQ Treapdate : 2021-11-23tags : ACM,数据结构author: Linno平衡树之FHQ Treap前置芝士BST平衡树的基本概念Treap“Treap=BST+Heap”它整体是拥有BST的性质的,但每一个节点都有一个附加权值,它的附加权值符合堆的性质。因此树的形态以及平衡与否都是由这个附加权值来决定的。而这个权值是随机选取的,因此这棵树大概平衡。FHQ Treap普通的Treap很难实现恼人的旋转。FHQ Treap应.原创 2022-02-07 23:33:55 · 835 阅读 · 0 评论 -
【算法竞赛学习笔记】Link-Cut-Tree基础-超好懂的数据结构
titile : Link-Cut-Treetime : 2021-7-21tags : ACM,数据结构author : Linno前置芝士树链剖分平衡树(splay即可)适用范围1、链上求和2、链上求最值3、链上修改4、子树修改5、子树求和(上述五种均可用树链剖分解决)6、换根7、断开树上的一条边8、连接两个点,保证连接后仍然是一棵树思想对每个结点所连的边都分实边和虚边。一个结点最多连出一条向儿子的实边,因此实边会聚集成链。splay维护一条实链。性质所有.原创 2021-11-17 22:05:03 · 658 阅读 · 0 评论 -
【算法竞赛学习笔记】dfs序与树链剖分-超有用的图论详解
title : dfs序与树链剖分date : 2021-8-12tags : 图论,ACMauthor : Linno支持操作在子树上或者是两点路径上的所有节点的求和、修改、查询等操作。具体操作大致为:(1)dfs进行树链剖分处理节点信息;(2)根据dfs序把树拉直然后套数据结构。dfs序把树搞成了“连续的”。一个节点的子树上的节点的时间戳,一定大于这个节点的时间戳且连续。某些链上的时间戳也是连续的。因为dfs序的性质——重链上的时间戳是连续的。树链剖分重链剖分——常用.原创 2021-11-06 17:17:13 · 302 阅读 · 0 评论 -
【算法竞赛学习笔记】树上问题基础-超有用的图论详解
title :树上问题基础tags : ACM,图论date : 2021-11-6author : Linno基本概念树的深度:从树根往下数,叶子节点所在的最大层数称为树的深度。(有教材定义不一样,看题意吧。要区分高度)树的直径:树中两节点距离的最大值称为树的直径。子树大小:对每一个节点的大小都等于左子树大小+右子树大小+1(自己)节点重量:删去该节点后,所有树大小的最大值。即该节点所有子树大小的最大值称为节点重量。求树的直径做法1:两遍dfsconst int N = 1000.原创 2021-11-06 17:04:48 · 540 阅读 · 0 评论 -
【算法竞赛学习笔记】用不着数据结构之珂朵莉树
title : 珂朵莉树date : 2021-8-26tags : 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 · 388 阅读 · 0 评论 -
【算法竞赛学习笔记】Bitset详解和应用
title : bitsetdate : 2021-8-20tags : ACM,数据结构author : LinnoBitsetbitset是一种类似数组的数据结构,它的每一个元素只能是0或1,每个元素只用1bit的空间。可以使用只包含‘0’或‘1’的字符串构造。优点支持所有的位运算。空间占用非常小,也可用于优化时间。声明方式#include<bitset>bitset<30>bi;string s="100101";bitset<10>.原创 2021-10-31 01:21:43 · 2211 阅读 · 0 评论 -
【超好懂的数据结构】可持久化线段树/主席树 详解~(update:11/12)
title : 主席树date : 2021-8-18tags : 数据结构,ACMauthor : Linno主席树学名为可持久化线段树,可以用来解决线段树存储历史状态的问题。我们在进行单点修改后,线段树只有logn个(一条链)的节点被修改,我们可以让修改后的树与修改前的树共享节点,节省时间和空间。在学习主席树之前,我们先引入三个前置知识:离散化、动态开点,权值线段树。离散化对于较大的数据范围,只要将关键点记录下来,记录下rank,就能把数据缩小到可以接受的范围,以便建立线段树或其他.原创 2021-10-29 00:52:21 · 752 阅读 · 0 评论 -
【算法竞赛学习笔记】pb_ds-超好懂的数据结构
title : pb_dsdate : 2021-8-21tags : 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 · 2392 阅读 · 0 评论 -
【算法竞赛学习笔记】用不着数据结构之zkw线段树
title : zkw线段树date : 2021-8-29tags : ACM,数据结构author : Linno如果没有接触过线段树的同学,可以看一下这篇博客:https://blog.youkuaiyun.com/SC_Linno/article/details/120971169简介zkw线段树是一种改良的非递归式的线段树,发明人张昆玮。zkw线段树有如下优点:(1)代码简短;(2)非递归;(3)常数小。缺点:不是很灵活。操作建树自底向上建树。输入了叶子节点的信息任何再一路向上传.原创 2021-10-29 00:27:53 · 563 阅读 · 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 · 197 阅读 · 0 评论 -
【算法竞赛学习笔记】STL-超好懂的数据结构!!!
title : 基础数据结构及STLdate : 2021-8-17tags : 数据结构向量(vector)叫动态数组或者变长数组应该都可以的。特点:非常重要的数据结构,即有数组性质,也能很方便的完成离散化等操作声明方法①vector<数据类型>向量名(向量长度)②vector<数据类型>向量名③vector<数据类型>向量名(向量长度,初始化值)基本操作push_back(x)//将x添加至末尾pop_back()//删除最后一个数fr.原创 2021-10-26 14:20:22 · 178 阅读 · 0 评论 -
【超好懂的数据结构】线段树基础~(update:11/13)
title : 线段树date : 2021-8-15tags : 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 · 301 阅读 · 0 评论 -
【算法竞赛学习笔记】二叉搜索树(BST)-超好懂的数据结构!!!
title : 二叉搜索树date : 2021-8-3tags : ACM,数据结构二叉搜索树BST(Binary Search Tree),二叉搜索树,又叫二叉排序树。他的结构不像二叉堆一样可控,有时会被卡成O(n2)O(n^2)O(n2)的操作复杂度(想象成一条链)。但掌握二叉搜索树相对于打开了平衡树的大门。掌握BST,有利于对Splay、替罪羊树等高效率的平衡树数据结构的学习。性质1.若左子树不为空,则左子树上的所有节点的值均小于父节点的值。2.若右子树不为空,则右子树上的所有.原创 2021-10-26 14:14:17 · 250 阅读 · 0 评论 -
【算法竞赛学习笔记】堆-超好懂的数据结构!!!
title : 堆date : 2021-8-3tags : ACM,数据结构什么是堆堆是一棵具有特定性质的二叉树,堆的基本要求是堆中所有结点的值必须大于等于(或小于等于)其孩子结点的值,这也称为堆的性质。堆还有另一个性质,就是当h>0时,所有叶子结点都处于第h或h-1层,也就是说,堆应该是一棵完全二叉树。堆的类型大顶堆:顾名思义大的元素在顶部小顶堆:顾名思义小的元素在顶部堆的操作上浮节点void checkup(int node) //与父节点比较向上更新{ if (.原创 2021-10-26 14:11:50 · 157 阅读 · 0 评论 -
【算法竞赛学习笔记】配对堆与左偏树-超好懂的数据结构!!!
title : 配对堆与左偏树date : 2021-8-22tags : 数据结构,ACM配对堆简介配对堆(pairing heap),支持插入,查询/删除最小值,合并,修改等操作,跑得比较快,但不能可持久化。操作合并直接把根节点权值较大的那个配对堆设成另一个的儿子即可。插入新元素可视为一个配对堆,与原堆合并即可。删除最小值(复杂)若把根节点的儿子都一个个合并到一起,复杂度会退化到O(n)Eileen保证均摊复杂度为O(logn),我们需要把儿子从左往右两两配对。Node.原创 2021-10-26 14:09:05 · 536 阅读 · 0 评论 -
【ACM练习记录】DP题型详解——2021JNU寒假训练营D2
title : 2021JNU寒假训练营Day2tags : ACM,练习记录date : 2021-9-19author : 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 · 379 阅读 · 0 评论 -
【ACM练习记录】数据结构题型详解——2021JNU寒假训练营D1
title : 2021JNU寒假训练营Day1tags : ACM,练习纪录date : 2021-9-18author : Linno题目链接:https://vjudge.net/contest/417319#overview考察内容:基本数据结构榜有点歪,像第二题这么简单居然没人做。题目不难均可做,需要熟悉STL的用法。A-queue思路对于先进的队伍是优先输出的,并且每次插入要先查看元素所属的队伍是否存在队列中。我们开一个map记录每个元素所属的队伍,然后再开两个队列。其中.原创 2021-10-26 13:29:49 · 383 阅读 · 0 评论