(」・ω・)」うー!(/・ω・)/にゃー!
——潜行吧奈亚子
摘要: 数组差分与前缀和 一、差分 差分就是把数组表现成初始数和一堆差的形式。 例:7 9 2 1 4 5 差分形式:7 2 -7 -1 3 1 这时可以发现: \(7=7\) \(9=7+2\) \(2=7+2+(-7)\) \(1=7+2+(-7)+(-1)\) \(4=7+2+(-7)+(-1)+3\ 阅读全文
posted @ 2021-12-25 22:22 GalaxyOier 阅读(97) 评论(0) 推荐(0)
摘要: 排序 一、快排 \(quick sort\) #include<bits/stdc++.h> using namespace std; int a[10001]; void kp(int l,int r) { int mid=a[(l+r)/2]; int i=l,j=r; while(i<=j) 阅读全文
posted @ 2021-12-25 22:21 GalaxyOier 阅读(33) 评论(0) 推荐(0)
摘要: 深搜 推荐资料: 1、一篇文章完全搞懂深度优先搜索(dfs)(含模板以及例题分析) 2、DFS模板 基本思路: 一条路走到底,不能走就退回上一步,看看有没有别的分支可以走,不断的退回,选择分支。 大概结构: #include<bits/stdc++.h> using namespace std; i 阅读全文
posted @ 2021-12-25 22:21 GalaxyOier 阅读(52) 评论(0) 推荐(0)
摘要: 广(宽)度优先搜索 相关知识:队列 主要操作: 1.入队(push) 2.出队(pop) 3.判断队列是否为空(empty) 4.统计队列元素个数(size) 5.访问队首元素(front) #include<queue> //queue头文件 queue<T> q; //构建一个T类型的队列 q. 阅读全文
posted @ 2021-12-25 22:20 GalaxyOier 阅读(32) 评论(0) 推荐(0)
摘要: 快速幂 定义 就是把一个高次的数转换成很多低次累乘的形式,类似进制转换的原理。 优点 我们计算$An$的朴素的方法就是循环$n$次来求幂,这样便得到$O(n)$时间复杂度的方法,其实大家都想得到一种优化的方法即$An=A^{\frac{n}{2}}*A^{\frac{n}{2}}$。 一直递归下去, 阅读全文
posted @ 2021-12-25 22:19 GalaxyOier 阅读(27) 评论(0) 推荐(0)
摘要: 单调队列 参考资料: OI WIKI 基础概念 单调队列的重点分为 "单调" 和 "队列" "单调" 指的是元素的的 "规律"——递增(或递减) "队列" 指的是元素只能从队头和队尾进行操作 \(PS\):此处的 "队列" 跟普通队列的一大不同就在于可以从队尾进行操作,$STL$中有类似的数据结构$ 阅读全文
posted @ 2021-12-25 22:18 GalaxyOier 阅读(108) 评论(0) 推荐(0)
摘要: 指针 & 链表 & 链式向前星 指针 用于存放地址,全称“地址变量” 指针的定义与取地址如下 int *p; //创建指针 int a; //定义整型变量 p = &a; //用p存放a的地址 *p =123 //更改a的值 优点: 可以很方便的更改数据或进行地址管理 缺点: 地址是随机生成的 链表 阅读全文
posted @ 2021-12-25 22:17 GalaxyOier 阅读(56) 评论(0) 推荐(0)
摘要: vector 这篇文章之所以会出现是因为博主太菜了,并不会vector 概述 $vector$是一个十分神似数组的东西,同时又混合了队列的操作,又新增了许多神奇的功能,使他成为了我个人认为的最难的数据类型。当然,这只是因为我没学过 总的来说,他有一个神奇的特点:他是可以动态扩容的,即可以避免很大一部 阅读全文
posted @ 2021-12-25 22:16 GalaxyOier 阅读(49) 评论(0) 推荐(0)
摘要: 图的遍历 图 简单的来说,图就是由一些小圆点(顶点)和连接这些点的直线(边)组成的图形。如下图: 就是由四个点$(A,B,C,D)\(和四条边\)(A-B)(A-D)(B-C)(C-D)$组成的 而图的遍历,就是把整个图走一遍 图的遍历 一般来说,有几种遍历方式: 深搜 深搜的基本思路:一条路走到死 阅读全文
posted @ 2021-12-25 22:14 GalaxyOier 阅读(23) 评论(0) 推荐(0)
摘要: 最短路 概述 基本的模板大概就是给一个图,求任意两点间的最短路(两点间有不同的距离)。这时候,就需要用到一些神奇的算法 \(Floyd-Warshall\) 之前有一篇笔记讲过如何用$O(n^2)$的算法来进行求解最短路,但这时就有些人嫌深搜或广搜太麻烦(比如我)。那么这时候就需要学学新算法了:$F 阅读全文
posted @ 2021-12-25 22:13 GalaxyOier 阅读(8) 评论(0) 推荐(0)
摘要: 线段树 概念 其实就是一个二叉树,运用了分治的思想。将一个有序数组从中间截断,并不断的截,直到最后每组只剩单一元素时即可,由于可以方便的进行区间修改和区间求和,于是叫做线段树 建树 思路: 先确定边界条件,即$L=R$时,在线段树上添加结点,否则就把区间截成两段,再次进行操作。代码如下: void 阅读全文
posted @ 2021-12-25 22:12 GalaxyOier 阅读(13) 评论(0) 推荐(0)
摘要: 离散化 思路 数据的范围非常大或者其中含有负数,但数据本身的个数并不是很多(远小于数据范围)。在这种情况下,如果每个数据元素的具体值并不重要,重要的是他们之间的大小关系的话,我们可以先对这些数据进行离散化,使数据中的最大值尽可能小且保证所有数据都是正数。 代码 #include<bits/stdc+ 阅读全文
posted @ 2021-12-25 22:12 GalaxyOier 阅读(7) 评论(0) 推荐(0)
摘要: 堆 概念 堆是一种特殊的完全二叉树 ,例如: 可以很明显的发现,示例中的每个父节点都小于它的子节点,符合这个特点的二叉堆叫做最小堆(小根堆),当然反之就叫最大堆(大根堆) 调整 那么,怎么把一个正常的数组调整为大根堆呢? 基本思路:每一次找到一个点,设其下标为$i$,获得它的子节点的下标,设为$j= 阅读全文
posted @ 2021-12-25 22:11 GalaxyOier 阅读(10) 评论(0) 推荐(0)
摘要: 并查集 概念 一种用来把一堆东西归并成几组的方法 实现方法 光看概念可能会懵掉,大概讲一下实现: 首先,给定元素数量和关系数量,并初始化,把每个元素都创一个组,组名就是元素的值 开始输入关系,每输入一个关系(\(a-b\)),就把关系中靠右的元素划分到靠左的元素中(就是把右边元素所在的组改成左边的元 阅读全文
posted @ 2021-12-25 22:09 GalaxyOier 阅读(26) 评论(0) 推荐(0)
摘要: 最小生成树 一般来说,最小生成树的题目大多与图的连通性和最小边权和有关,因此就很容易想到一种十分容易实现的算法: 先按照边权排序,再从最小的边开始枚举,若联通且不产生回路,就加入到生成树中,直到加到$N-1$条边为止(即已经成为了树且不形成回路) 那问题来了,代码怎么写,不难想到可以使用并查集,把所 阅读全文
posted @ 2021-12-25 22:09 GalaxyOier 阅读(27) 评论(0) 推荐(0)
摘要: 一般的,当要读入的东西常数过大时,就会使用快读,且时间复杂度比$cin$低。 代码: void read(int &x) { x = 0; int f = 1; char c = getchar(); while (!('0' <= c && c <= '9')) { if (c == '-') { 阅读全文
posted @ 2021-12-25 22:09 GalaxyOier 阅读(93) 评论(0) 推荐(0)
摘要: 对拍 前置知识 首先,听完了OYDS大奆的讲话,学费了很多,首先是可以加入几个工具栏指令来获得更严密的编译(就是能找到一些不容易发现的错误)。 首先,进入Dev-C++,点击【工具】,选择第一个【编译选项】,进入之后在上面的方框输入 -Wall -Wshadow -std=c++11 然后就可以了。 阅读全文
posted @ 2021-12-25 22:08 GalaxyOier 阅读(228) 评论(0) 推荐(0)
摘要: 造数据 几天前…… 自从加入了某个OJ,我自己编题的热情空前高涨,但每编完一道,就发现,根本不会整数据,每次只能笔算输入输出,就很烦,但自从听了OYDS(没错,还是那个OYDS)大奆的讲话,我心中有了一个想法…… 造数据 首先,根据上篇博客所说,有几个操作: system("生成.exe > a.i 阅读全文
posted @ 2021-12-25 22:07 GalaxyOier 阅读(60) 评论(0) 推荐(0)
摘要: 树链剖分 定义 树链剖分用于将树分割成若干条链的形式,以维护树上路径的信息。 具体来说,将整棵树剖分为若干条链,使它组合成线性结构,然后用其他的数据结构维护信息。 前置知识——重链剖分 定义重子节点表示其子节点中子树最大的子结点。如果有多个子树最大的子结点,取其一。如果没有子节点,就无重子节点。 定 阅读全文
posted @ 2021-12-25 22:06 GalaxyOier 阅读(41) 评论(0) 推荐(0)