- ### 常用STL: - #### **vector** - 变长数组,倍增的思想 - 初始化: ```c++ //初始化 vector a; vector a(n); vector a[n]; vector a(n, 0);//长度为n,值为0 ``` - 操作: ```c++ size() ...
> 「观前提醒」 > > 「文章仅供学习和参考,如有问题请在评论区提出」 [toc] ## 前言 简单的模板整理,只是概括了一下具体的实现方法(说到底是给自己写的),如果看不明白可以去看原视频(讲的很好),链接在参考资料里。 ## 定义 **最近公共祖先**简称 $LCA$(`Lowest Comm ...
# 二叉树的链式存储 ```c // // main.c // LinkBiTree // // Created by Eason on 2020/8/10. // Copyright © 2020 Eason. All rights reserved. // #include #include # ...
一、什么是数据结构 1、数据结构的起源 1968年,美国高德纳教授,《计算机程序技术艺术》第一卷《基本算法》提出,开创了数据结构和算法的先河。 数据结构是一门研究数据之间关系、操作的学科,而非计算数据方法 数据结构+算法=程序 揭露了程序的本质,沃思凭借这个观点获得图灵奖 2、数据结构中的基本概念 ...
- ### 深度优先搜索 - 一条路走到黑 - 回溯/剪枝 - 每一个dfs都对应一个搜索树 - 解决全排列,搜索所有可能解 - 宽度优先搜索 - 一层一层搜索 - 解决最短路问题 搜索方式| 数据结构| 空间 | 特点 : | : | : | : DFS |stack |O(h) |不具有最短性 ...
[P1196 [NOI2002] 银河英雄传说](https://www.luogu.com.cn/problem/P1196) 使用带权并查集维护: 1. 每个战舰所属列。 2. 每个战舰到当前列第一个战舰的距离。 3. 每列的战舰数量。 - 如何求同列战舰之间相隔的战舰数量? 使用两战舰到当前列 ...
- ### 哈希表 - 作用:将庞大的空间,映射到小的空间,集中数据,一般用取模,取模的数尽量取质数,最大程度减小冲突 - 操作:一 般是添加和查找元素,删除元素通常有一个标记数组,对元素标记为已删除 - 离散化相似,离散化是特殊的哈希方式,离散化处理的数据是单调的,相对位置不变 - 映射会出现冲突 ...
# Burnside 定理 ## 问题: 给定一个 $n$ 个点,$n$ 条边的环,有 $m$ 种颜色,给每个顶点染色,问有多少种**本质不同**的染色方案,答案对 $10^9+7$ 取模 注意本题的本质不同,定义为:**只需要不能通过旋转与别的染色方案相同**。 ## 题目初步解读 我们考虑如果不 ...
# 链表定义 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑是通过链表种的指针链接次序实现的。链表由一系列节点组成,每个节点包括两部分:一个是存储数据元素的数据域,一个是存储下一个节点地址的指针域。单向链表从头节点(也可以没有头节点)开始,指针指向下一个节点的位置,只能由上一个节点 ...
**Upd 2023.8.1:** 补充了更一般的分块方法和查询大于等于 $k$ 的数的个数的方法 来看一个[例题](https://www.luogu.com.cn/problem/P3372): - 现在给出一个长度为 $N$ 序列 A,定义两个操作如下: - ```1 l r v```,表示从 ...
二维凸包,这篇博客已经说得够好了,介绍了**斜率逼近法、Jarvis算法,Graham算法,还有Andrew算法**。我这篇博客只会非常详细的介绍**Andrew算法**。 [数论小白都能看懂的平面凸包详解 - ShineEternal的笔记小屋 - 洛谷博客 (luogu.com.cn)](htt ...
扫描线可以用来求解周长并和面积并。 # 面积并 ## 扫描线 给定 $n$ 个长方形,求它们的面积并。下面以两个长方形为例: ![](https://cdn.luogu.com.cn/upload/image_hosting/3i4cdagb.png?x-oss-process=image/resi ...
> 「观前提醒」 > > 「文章仅供学习和参考,如有问题请在评论区提出」 [toc] ## 引入 **线段树(Segment Tree)**是算法竞赛中常用的用来维护区间信息的数据结构。 线段树可以在 $O(logN)$ 的时间复杂度内实现**单点修改、区间修改、区间查询**等操作。能够用来维护很多 ...
D.The Game of Eating 题意: 一共有m道菜,n个人轮流点,一共点k道。 第i个人对第j道菜的喜爱程度\(A_i\)公开, 一个人点了菜所有人都可以吃到。 每个人都希望最大化自己的喜爱程度之和,求最终的点菜集合。 分析: 倒着贪心,如果最后一个人最喜欢吃的菜没被选那么他一定会选择这 ...
## [A - Chord (abc312 A)](https://atcoder.jp/contests/abc312/tasks/abc312_a) ### 题目大意 给定一个长度为$3$的字符串,问是不是`ACE, BDF, CEG, DFA, EGB, FAC, GBD`中的一个。 ### ...
## 定义 **具有单调性的栈结构,该数据结构的目的是快速找到与一个元素距离最近的元素** ## 过程(摘自oiwiki) 插入 将一个元素插入单调栈时,为了维护栈的单调性,需要在保证将该元素插入到栈顶后整个栈满足单调性的前提下弹出最少的元素。 例如,栈中自顶向下的元素为 \{0,11,45,81\ ...
单链表的定义 什么是单链表 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。 单链表的各个数据元素在物理上可以是离散存放的,每个结点除了存放数据元素外,还要存储指向下一个节点的指针。而顺序表是连续存放的,每个结点中只存放数据元素。 单链表的优点:不要求大片连续空间,改 ...
- ### 链表 - 用数组模拟,不同于结构体加指针 - 调用new关键字开上万级别的节点非常慢,基本会超时 - #### 单链表 - 来构造邻接表 - 用于存图与树 - ##### 基本结构: - head 表示头结点的下标 - e[i] 表示节点i的值 - ne[i] 表示节点i的下一个节点的下 ...
## 引入 >有 n 个物品和一个容量为 W 的背包,每个物品有重量 w{i}和价值 v{i}两种属性,要求选若干物品放入背包使背包中物品的总价值最大且背包中物品的总重量不超过背包的容量。 我们之后涉及到的所有背包问题都会根据这个背景展开 ##1. 01背包 每个物品只能选取一次。 这样每个物品都会 ...
左偏树属于可并堆的一种,可并堆,也就是可以在较低的时间复杂度下完成对两个堆的合并。 # 定义及性质 对于一棵二叉树,定义外节点为左儿子或右耳子为空的节点,定义其的 $dist$ 为 $1$,而不是外节点的 $dist$ 为其到子树中最近的外节点距离 $+1$。空节点的 $dist$ 为 $0$。 例 ...