摘要: 零.概要 线段树是一种十分优秀的数据结构,可用于维护大量的(几乎所有)数列区间问题,而可持久化线段树就是拥有版本记录与回退功能的线段树。具体的一种实现方法为主席树。本文主要讲解主席树。 例题:P3834 【模板】可持久化线段树 2(主席树) 主席树又名函数式线段树,由HJT学长发明,由于与某位大神姓 阅读全文
posted @ 2021-03-08 21:10 一杯好凉茶 阅读(62) 评论(0) 推荐(1) 编辑
摘要: 分块是对数列进行操作的一种(在线毒瘤暴力卡常)数据结构,把数列分块维护。主要处理区间问题 阅读全文
posted @ 2021-03-01 19:15 一杯好凉茶 阅读(60) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2020-11-17 16:31 一杯好凉茶 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 0.矩阵的代码表示 struct node { //本例为16*16的方阵 int mat[15][15]; }x,y; 1.矩阵乘法 矩阵乘法(就是线性代数里学过那个)是对矩阵的一种基本运算,仅当矩阵A列数与矩阵B行数相等时A*B才有意义。由A(m,n)*B(n,p)可得到C(m,p);矩阵乘法满 阅读全文
posted @ 2020-11-02 12:09 一杯好凉茶 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 没错讲的就是广(宽)度优先搜索 广度优先搜索,又叫宽度优先搜索,英文缩写BFS,是解决最短,最小等问题的有力方法。对于BFS,我们常常用一队列记录,每次对队首元素进行拓展,被搜索元素加入队尾。代码: //咕咕咕,不写了 阅读全文
posted @ 2020-10-29 16:17 一杯好凉茶 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 1.欧几里得算法: gcd(a,b)==gcd(b,a%b) 2.扩展欧几里得: a∈Z,b∈Z,总存在x∈Z,y∈Z,使得ax+by=gcd(a,b) 3.裴蜀定理: 方程ax+by=c(线性丢番图方程)有整数解的充分必要条件是c是gcd(a,b)的倍数(比扩展欧几里得更具广泛性) 4.枚举质数筛 阅读全文
posted @ 2020-10-27 13:20 一杯好凉茶 阅读(106) 评论(0) 推荐(0) 编辑
摘要: GDB是类Unix操作糸统下使用命令行调试的调试软件,全名GNU Debugger,在NOI系列竞赛使用的NOI Linux系统中起很大作用(如果不想用毒瘤Guide或直接输出)(XXX为文件名) 1.编译指令:g++ -o XXX XXX.cpp -g 2.调试命令格式:gdb XXX 3.设置断 阅读全文
posted @ 2020-10-26 17:54 一杯好凉茶 阅读(157) 评论(1) 推荐(0) 编辑
摘要: 很多时候,我们会做一些数据大的题,如求斐波那契数列第14451496144项的值。这当然可以用递归+记忆化+矩阵加速或通项公式来求解。但这时这时如果用迭代的话数组就需要开到14451496144这么大,此时占用空间太大,所以我们要引入滚动数组的概念。滚动数组其实就是通过一定运算来以时间换空间(对我这 阅读全文
posted @ 2020-10-23 13:10 一杯好凉茶 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 话不多说直接上代码 int Pow(int a,int b){ int ans = 1; int base = a; while(b){ if(b & 1) ans *= base; base *= base; b >>= 1; } return ans; } 需要取模: #define mod 1 阅读全文
posted @ 2020-10-22 16:09 一杯好凉茶 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 1.vector c++STL中的可变长度数组,主要支持操作有:建立,添加到末尾,返回长度,调整大小,定义迭代器及对迭代器的具体操作。具体如下: 1.建立一个元素类型为int的可变长度数组v,最开始N个元素,初始值为i(默认为零,N,i可省略): #include<vector> vector<in 阅读全文
posted @ 2020-10-21 20:03 一杯好凉茶 阅读(105) 评论(0) 推荐(0) 编辑