自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 Tire 树(字典树/前缀树)

用来快速存储查找字符串集合的一种数据结构将字符串按顺序连接根节点上,并在字符串结束的地方打上标记并计数。

2025-05-04 20:20:01 324

原创 动态规划--提高(从集合的角度出发)

1.状态表示f[i,j]:(1)集合:表示从(1,1)到(i,j)的所有路线(2)属性:max/min/数量2.状态计算:集合的划分划分依据:“最后”划分原则:①不重:求数量时必须要满足,求max和min时可不满足,因为最值重复也没关系,还是最值。②不漏:一定要遵守以acwing 1015摘花生为例属性为max以最后一步f[i,j]为例划分,可划分为从上面来和从左边来。即f[i,j]=f[i-1,j]+w[i,j]和f[i,j]=f[i,j-1]+w[i,j];

2025-04-26 22:15:37 881

原创 堆--优先队列

堆,是一种实现优先队列的常用方式。

2025-04-20 11:16:09 165

原创 acwing--差分&&贪心

再给上面的一阶差分序列进行一次差分,变成原序列的二阶差分(c[i]=b[i]-b[i-1]):1,0,0,0……则可构造区间的一阶差分(b[i]=a[i]-a[i-1]):1,1,1,1。如此一来,可以将原来区间一段的变化变为这个区间开头数字的变化。所以可拓展为将y=x^k变为y=0要进行k+1阶差分。我们可以看出原序列符合y=x的线性递增关系…而二阶差分序列则只有一个值的变化其余y=0。给一段区间上加上:1,2,3,4。而其一阶差分序列符合y=c的关系。

2025-03-05 17:53:39 196

原创 数论--裴蜀定理

对于整数a和b,一定有正整数x,y使得ax+by=__gcd(a,b);可理解为将数组中所有数的最大公因数,如果能b整除则说明则说明必有解。

2025-03-01 17:13:09 188

原创 排列组合模板---A(n,m)和C(n,m)

在排列组合中A与C代表不同的概念代表的是“排列”(Arrangement 或者 Permutation),指的是从n个不同元素中取出m(1≤m≤n)个元素,按照一定的顺序排成一列,这种安排的方式称为排列。其计算公式为​代表的是“组合”(Combination),指的是从n个不同元素中取出m(1≤m≤n)个元素,不考虑顺序合成一组的方法数。组合的计算公式为,这里的选择不关心顺序,因此数目会少于排列的情况。简单来说,当问题涉及到顺序时使用排列(A),而当问题不涉及顺序时则使用组合(C)。

2025-02-07 16:53:03 1143

原创 滑动窗口-单调队列

滑动窗口实际上属于双指针中的快慢指针,用两个指针来维护窗口大小。

2025-02-05 19:49:20 36

原创 日期问题--模板

例题:acwing-466. 回文日期。例题:acwing-3607.打印日期。四、给定年月日,求n天后的日期。二、判断某年某月的天数。一、判断日期是否合法。

2025-01-23 17:10:12 234

原创 C++---(标准模板库)STL

/typename:变量类型//注:如果typename为STL容器需在>>处加上空格​假设typename为int//两维都可变长//第一维固定。第二维可变长​队列优先队列大根堆小根堆。

2025-01-09 21:54:20 901

原创 acwing--dp--1--背包问题

n个物品,v为背包体积,Vi为各物品体积,Wi为各物品价值。每个物品只能用一次。二进制优化,a,b,s 分别表示物品的体积,价值和个数。dp的优化是对状态方程进行转化变形。

2024-12-16 17:30:35 327

原创 acwing--dp--2--线性dp和区间dp

做法一:自上而下。注意:初始化要到i+1,因为状态计算的是左上和右上分别加上当前值的最大值。做法二:自下而上好处:不用最后遍历取最大值,因为最上面就一个。

2024-12-16 17:27:56 306

原创 st表--静态区间最值查询

st表是一种处理静态区间内求最值的数据结构。主要分为预处理和查询两部分,查询复杂度为O(1),用了动态规划的思想。

2024-12-15 09:46:16 176

原创 数论--欧拉函数

1.原理:欧拉函数可以通过质因数分解来计算。如果n可以质因数分解为p1^α1 * p2^α2 * ... * pk^αk,则φ(n) = n * (p1-1)/p1 * (p2-1)/p2 * ... * (pk-1)/pk。这个公式可以通过容斥原理来证明‌。2.作用:求小于n的和n互质的数字的个数。

2024-12-15 09:07:36 201

原创 进制的问题

计算数字x在进制p 下的各位数字之和。

2024-11-28 22:48:03 245

原创 快速幂--模板

反复平方,用于求a^k或a^k%p;快速幂:求a^k%p。

2024-11-26 22:20:55 320

原创 素数--计数

质数计数--枚举、埃筛、线筛

2024-11-25 21:53:03 196

原创 最大公约数和最小公倍数

需用头文件:#include

2024-11-24 22:49:53 127

原创 contains

contains:判断某个某个容器(例:set)中是否有某个元素或子串,有则返回true。例题:牛客周赛68C。

2024-11-20 20:26:23 256

原创 数据结构--线性表的顺序存储和链式存储

示例: 二、链式存储--不要求存储空间连续,链表存储 三、数组和链表各操作复杂度对比操作/类别 数组 链表 访问 O(1) O(n) 插入(中间) O(n)(插入位置以后元素要整体后移) O(1) 末尾添加(有足够空间) O(1) O(1)(有尾指针)O(n)(无尾指针,如无需要遍历链表找到尾节点插入)

2024-10-19 16:27:03 215 1

原创 最大子列和

在线处理:每输入一个数据就进行即时处理,在任何一个地方中止输入,都能正确给出当前值。题目:给定N个整数的序列{A1,A2,……An},求函数f(i,j)=max{0,复杂度:T(n)=O(n)。

2024-10-13 12:23:21 185

原创 c++中保留小数(cout)

setprecision

2024-10-10 21:52:08 766

原创 cmp是什么

cmp

2024-10-10 21:19:34 201

原创 图的邻接矩阵存储法和邻接表存储

图一的二维数组中,第i行第j列表示的是点i到点j是否有边。1表示有边,∞表示没有边。0表示(i=j)时自己到自己。图一为二维数组,图二为要存储的图。以两图为例:(《啊哈!

2024-10-10 21:04:27 266

原创 数据结构--栈与队列----模拟(用数组)

栈:先进后出。队列(循环队列):先进先出。

2024-09-26 16:21:29 422

原创 数据结构--链表与双向链表

双链表(双向链表):每个节点有一前一后两个指针。)单链表:邻接表(用最多) 存储图和树。链表是一种非连续存储的线性存储结构。链表的每一个节点都由数据和指针组成。时间复杂度为O(1)原理同上图。4.将下标是k的后面点删掉。二、链表的分类与基本操作。3.将x插到下标为k的节点。5.翻转 reverse。2.插入下标为k的节点后。

2024-09-23 14:14:26 428

原创 Sort函数

作用:对两个迭代器(或指针)指定的部分进行快速排序。可以在第三个参数传入定义大小比较的函数,或者重载“小于号”运算符。bool cmp(int a,int b)//重载运算符。return a>b;//a>b则放在前面。2️⃣//从大到小排序。

2024-09-08 16:05:33 191

原创 算法基础---最短路问题(实现)

3、稀疏图和稠密图区分:稠密图:n^2~m,稀疏图:n~m。循环后所有边一定满足dist[b]>=dist[a]+w //三角不等式。{ t←不在S中的距离min的点 n^2次。2、多源最短路:多个起点到其它所有点的最短路。注: 1、单源最短路:一个起点到其它所有点的最短路。(看dist[x]>dist[t]+w(权重))(看dist[x]>dist[t]+w(权重))dist[x]:当前1~x最短路间距离。

2024-09-07 15:44:22 988

原创 算法基础---区间和并

例题:区间和并---模板。

2024-09-03 19:57:15 501

原创 算法基础---离散化

当一组数据值域太大(例:0~10^9),而数据数量很小(例:10^5)时,值域中的数不是全都用得上的。所以需要用离散化将该组数据。例:a[]={1,3,3,100,50000};,来用数组表示这组数据,有效。

2024-09-03 19:15:33 438

原创 算法基础---位运算

0001k=0001,k=2,k是右移的位数,这里k = 2.(一)n的二进制表示中第k位(自右向左)是几?(二)、lowbit(x):返回x最后一位1及后面所有零。返回:x&-x 或 x&(~x+1)任何数据在计算机中都是以。进行操作,所以效率很高。总:1+2:n>>k&1。存储,位运算是指直接对。例:求二进制中1的个数。

2024-09-03 18:00:39 363

原创 算法基础---双指针

朴素算法在第二层遍历时,会重新开始j恢复到初始位置。但双指针则不会恢复到初始位置,在满足位置的地方继续走下去。以此减少算法的复杂度。输入一个字符每个子串之间有一个空格,让你输出每一个空格后的子串。1.快慢指针指向两段不同的内存,两指针同向移动扫描。2.对撞指针指向同一段内存,两指针反方向移动扫描。输入 abc def hij。例2:最长连续不重复子列。

2024-09-02 20:08:06 321

原创 算法基础---拓扑序列

∵一定存在一个入度为0的点。一、理解:有向无环图(亦称拓扑图)必有拓扑序列。出度:多少条边从该点指出。入度:多少条边指向该点。

2024-09-02 19:36:30 205

原创 算法基础---深搜(DFS)与广搜(BFS)

1、思路:先找一条路走到头无路可走记录方案并回退一格继续向下搜以此递归。2、注意:1、为减少算法复杂度需要记录之前遍历的结果,后直接调用即可。2、递归之后需要恢复现场。一层一层搜,当每一次搜索的权重相同时可以求”二、深度优先搜索(DFS)三、广度优先搜索(BFS)

2024-09-01 17:02:34 816

原创 基础算法---差分(前缀和逆运算)

接下来输入m个操作,每个操作包含三个整数l, r, c,表示将序列中[l, r]之间的每个数加上c。因为a数组为b数组的前缀和,∴b[i]+c 可使a[i]及以后每个a都变为a[i]+c。利用性质我们可以求【l,r】的a+c序列。(先b[l]+=c,再b[r+1]-=c)也就是说差分可以相当于数列中的an,前缀和可以看为Sn。接下来m行,每行包含三个整数l,r,c,表示一个操作。an的前缀和,b1……共一行,包含n个整数,表示最终序列。第二行包含n个整数,表示整数序列。使ai=b1+b2+……

2024-09-01 09:56:39 303

原创 const的用法

一、基本概念:const被称为常量限定符,定义后表示该变量不可修改。

2024-08-31 10:15:30 462

原创 字符串和数字的转换

【代码】atoi函数。

2024-08-31 09:55:05 301

原创 vector<int>& arr

在这个示例中, func1 中对 arr 的操作是在复制的对象上进行的,而 func2 中则是直接对传入的原始 myVector 进行操作。,从而提高程序的性能。当传递一个非常大的容器(如 vector )时,如果不使用引用而是按值传递,会导致整个容器被复制,这可能会带来较大的性能开销。在 vector<int>& arr 中使用 & 是为了传递引用。传递引用的主要目的是。

2024-08-31 09:30:43 362

原创 基础算法---前缀和

2.求区间和:【l,r】Sr-Sl-1=al+……ar 算法复杂度为o(1),需先预处理……其前缀和为si = a1+a2+∴求和:Sx2y2-Sx2,y1-1-Sx1-1,y2+Sx1-1,y1-1。类似于高中的数列sn为a的前n项和……因为x1,x2,y1等均为整数所以应以虚线位置计算面积。一、思想:有一数组a1,a2。

2024-08-30 21:28:45 268

原创 算法基础---高精度

在c++中int等存储类型最高只能计算少位整数,再大就超出存储空间了。这就需要用数组来存储大整数(例:整数的位数

2024-08-30 20:59:47 1762

原创 算法基础---二分

在一个已经排好序的数组之中,快速找出一个数的下标,时间复杂度为log(n)。特别要注意边界点。

2024-08-30 09:10:49 367 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除