算法典
文章平均质量分 84
本专栏使用
①acwing yxc大佬的模板
②算法竞赛进阶指南
Stellaris_L
Don't mistake a science for a subject.
展开
-
C++基础(2022.9.3)
是一种后进先出 (Last In, First Out) 的容器适配器,仅支持查询或删除最后一个加入的元素(栈顶元素),不支持随机访问,且为了保证数据的严格有序性,不支持迭代器。是一种先进先出 (First In, First Out) 的容器适配器,仅支持查询或删除第一个加入的元素(队首元素),不支持随机访问,且为了保证数据的严格有序性,不支持迭代器。提供的双端队列数据结构,能够提供线性复杂度的插入和删除,以及常数复杂度的随机访问。是有序键值对容器,它的元素的键是唯一的。:按字典序比较两个容器的大小。原创 2022-09-03 10:13:35 · 833 阅读 · 0 评论 -
前缀和&差分
差分是前缀和的逆运算,若A数组的前缀和是B数组,那么A数组就是B数组的差分。所围成的矩形都加上c,所以我们再将多余的部分减去就可以了。 与一维差分相同我们可以将上述操作进行一个转化,对。 同样,二维差分叶可以看成是二维前缀和的逆运算。② 区间前缀和可以快速算出一个区间的值的和。中的随机一个矩形,对其中每一个值加上c。,那么就称数组B称为数组A的差分。 可以将上述操作转化为,在。,对其中每一个值加上c,等同于。的时间从B数组得到A数组。 总结:在A数组的。区间内加上c,等同于。原创 2022-07-13 20:47:54 · 261 阅读 · 0 评论 -
高精度运算
实现高精度加法主要有2点:①怎么将数存下②怎么对数运算一、怎么存下一个大整数?答:存在数组当中,并从个位(低位)开始存。例如一个数123456789。(1)为什么要逆序存?答:每次计算的时候,都有可能遇到进位的问题。如果在最大一位计算时出现了进位的情况,而我们又是使用正序存储,就需要移动数组在开头空出一个位置,这样会十分繁琐。所以直接使用逆序存储就可以十分方便的加上最后一位进位了。而且这也符合我们人工计算的方向。(后面会解释人工计算)(2)为什么使用动态数组(vector)答:在动态数组中,可以原创 2022-07-04 09:17:55 · 415 阅读 · 0 评论 -
二分(整数二分、实数二分)
单调序列或单调函数中的查找方式。(终止条件:l=r)(1)缩小范围:r=mid,l=mid+1,取中间值:mid=(l+r)>>1。(2)缩小范围:l=mid,r=mid+r,取中间值:mid=(l+r+1)>>1。第一种不会取到rrr这个值,第二种不会取到lll。可以用来处理无解的情况。最初的二分区间从[1,n]扩大到[1,n+1]和[0,n],若最后二分终止在这个越界的下标上,则无解。例题789. 数的范围 - AcWing题库实数域二分解析注意精度问题使用循环固定次数的二分方法解决精度问原创 2022-07-03 23:02:04 · 388 阅读 · 0 评论 -
排序(快速排序、递归排序)
一、排序这里主要讲两种排序,即快速排序和递归排序。更多排序可以看这篇文章。快速排序(分治)解析[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1frC2P3Q-1653190081204)(C:/Users/李俊霖/Desktop/第一章-基础算法/image-20220208174647281.png)]①确定分界点:x=q[l],q[r],q[l+r>>1]x=q[l],q[r],q[l+r>>1]x=q[l],q[r],q[l+r>原创 2022-01-16 20:16:07 · 89 阅读 · 0 评论 -
第二章 数据结构
链表与邻接表 用数组模拟,不使用结构体的形式。struct Node{ int val; Node *next;}; 这种操作在面试的时候常用,但在笔试题中用的不多,因为这种方式在创建新的链表的时候都会调用new函数,new Node();这种操作耗费的时间多,在十万或更多的级别会超时。数组模拟单链表(邻接表)解析 多个单链表可以组合成邻接表——常用于用于存储图和树,head->空,head->⚪->⚪->⚪->空。链表不同于顺序表,逻辑上原创 2022-03-28 19:21:58 · 1201 阅读 · 0 评论 -
定理定理定理
互质 对于任意的自然数 a,ba,ba,b 若有 gcd(a,b)=1gcd(a,b)=1gcd(a,b)=1,则说 a,ba,ba,b 互为质数。欧拉函数(容斥定理)解析一、欧拉函数 欧拉函数 φ(n)\varphi(n)φ(n),指的是 1∼n1\sim n1∼n 中与 nnn 互质的数的个数。φ(6)=2\varphi(6)=2φ(6)=2。 欧拉函数存在一个公式,这个公式同样要使用之前的算数基本定理。N=p1α1p2α2⋯pkαkN=p_1^{\alpha_1}p_2^{原创 2022-05-13 14:28:19 · 91 阅读 · 0 评论 -
栈与队列(手动实现)
栈与队列栈(先进后出) 栈的一个重要特性就是先进后出,数组模拟栈模板// tt表示栈顶int stk[N], tt = 0;// 向栈顶插入一个数stk[ ++ tt] = x;// 从栈顶弹出一个数tt -- ;// 栈顶的值stk[tt];// 判断栈是否为空if (tt > 0){}例题828. 模拟栈 - AcWing题库#include <iostream>using namespace std;const int N=1e5原创 2022-04-30 20:37:21 · 287 阅读 · 0 评论 -
贪心算法-
贪心算法贪心算法没有固定套路,所以直接从题目开始。问题一(区间选点)题目连接解析&证明一、将每个区间按右端点从小到大排序。二、从前往后依次枚举每个区间①如果当前区间中已经包含点,则直接pass②否则选择当前区间的右端点。证明:证明有一些通用方法。例如我们想证明A=BA=BA=B,那么我们可以证明A≥BA\ge BA≥B和A≤BA\le BA≤B。回到这题,我们设ansansans为题目最终的最优解,cntcntcnt为我们策略的解。①ans≤cntans\le cn原创 2021-12-20 09:32:25 · 315 阅读 · 0 评论 -
高精度加法
一、怎么存下一个大整数?(1)为什么要逆序存?(2)为什么使用动态数组(vector)二、怎么对数组进行计算?(1)什么是人工加法三、代码实现原创 2021-12-18 19:51:01 · 459 阅读 · 0 评论 -
数论...
关于数论的算法模板原创 2021-12-06 22:03:12 · 192 阅读 · 0 评论