欢迎来到CJY的博客|

wenli7363

园龄:3年3个月粉丝:7关注:6

文章分类 -  算法 / ACWING算法基础课

【ACWING】数论2
摘要:# 1 欧拉函数 `f(n)`:表示1-n中与n互质的数的个数 ![image-20230718160455659](https://img2023.cnblogs.com/blog/2637378/202307/2637378-20230718160457933-777947831.png) ##
29
0
0
【ACWING】数论1
摘要:1 质数 1.1 质数的判定 -- 试除法O(n) bool is_prime(int n) { if(n < 2) return false; //for(int i = 2; i < n; i++) // 这个最简单,但是复杂度高 for(int i = 2; i <= n / i; i ++)
9
0
0
搜索与图论3
摘要:# 0 前言 ![image-20230703172040639](https://img2023.cnblogs.com/blog/2637378/202307/2637378-20230703172040612-1695737413.png) # 1 最小生成树算法 ## 1.1 Prim算法
7
0
0
【ACWING】模拟单链表、双链表、栈、队列、堆、哈希表
摘要:# 1 模拟链表 **讲讲用数组模拟链表** 1. [单链表](https://www.acwing.com/problem/content/description/828/) 2. [双链表](https://www.acwing.com/problem/content/829/) 开两个数组`e
65
0
1
【ACWING】前缀和、差分
摘要:# 前缀和 ==直接看模板题就好啦== ## 前缀和 设有一个数列{a1,a2,a3...an},前缀和Sn=a1+a2+a3+...+an,就是数列的前n项和,其中,要求其下标从1开始,==规定S0=0== 1. 如何求前缀和 :递归==> `S[n]=S[n-1]+a[i]` 2. __前缀和有
11
0
0
【ACWING】二分算法
摘要:# 二分查找 1. 二分主要分为**整数**和**实数**两种问题,最麻烦的是整数二分问题,因为涉及到的边界问题比较多 2. 二分大多是利用了单调性,有单调性的一定可以二分,但是有些二分可以没有单调性 3. 二分的本质按y总说的,就是利用一个边界点,将其分为两部分,一部分满足一定条件,另一部分不满足
46
0
0
【Acwing】最短路算法
摘要:# 0 前言 最短路算法包含以下五种,注意区分 ![1](https://img2023.cnblogs.com/blog/2637378/202307/2637378-20230703155813315-1956794806.png) # 1 Dijkstra算法 该算法使用于单源最短路、无负边权
31
0
0
【ACWING算法基础课】综述
摘要:1 基础算法 快排/归并 二分 高精度加减乘除 前缀和、差分 双指针 位运算 离散化 区间合并 2 数据结构 单链表、双链表、栈、队列、堆、哈希表 单调栈 单调队列 KMP Trie树、并查集 线段树和树状数组 STL专题 3 搜索和图论 邻接矩阵/邻接表 BFS、DFS、拓扑排序 最短路算法
43
0
0
算法中的初始化0x3f
摘要:写算法的时候,我们常常需要用到设置一个常量用来代表“无穷大”,比如对于int类型的数,有的人会采用INT_MAX,即0x7fffffff作为无穷大。 但是以INT_MAX为无穷大常常面临一个问题,即加一个其他的数会溢出。而这种情况在动态规划,或者其他一些递推的算法中常常出现,很有可能导致算法出问题。
332
0
0
【ACWING】动态规划专题
摘要:# 1 背包问题(选择模型) ## 1.1 ## 1.2 波动数列 # 2 二维DP # 3 整数划分 [3428. 放苹果](https://www.acwing.com/problem/content/3431/) [1050. 鸣人的影分身](https://www.acwing.com/pr
10
0
0
【ACWING】 数论
摘要:# 1 求最大公约数(gcd)/欧几里得算法/辗转相除法 > 补充一点小细节,0与任何数的gcd等于这个数本身 ```C++ int gcd (int a, int b) { return b ? gcd (b, a % b) : a; } ``` # 2 算术基本定理(公理) 所有整数都能够分解成
23
0
0
【ACWING】 线段树和树状数组
摘要:线段树可以说包含树状数组,树状数组往往代码短,运行效率非常高 ==线段树和树状数组,下标都从1开始存== 一般优先考虑树状数组。 # 1 树状数组 ==O(logn)== ## 1.1 用处 本质上只有这两种作用,可以结合其他方法创造出更多用途(比如区间修改和单点查询)。 1. 动态地给某个位置上的
64
0
0
【ACWING】 位运算
摘要:# 1 遍历二进制下每一位的值 > 求n的二进制表示中的第k位 > (n>>k)&1 ```C++ int n = 10; for(int k = 3; k >= 0; k--) cout>k)&1; ``` # 2 lowbit -- 返回一个二进制表示的最后一个1 > 比如`x = 1010`,
5
0
0
【ACWING】由数据范围反推算法复杂度以及算法内容
摘要:[由数据范围反推算法复杂度以及算法内容](https://blog.csdn.net/weixin_45891612/article/details/128656670)
7
0
0
【ACWING】 搜索和图论(一)
摘要:# 1 DFS BFS # 1.1 对比 ==1. 两种算法都能对应一个搜索树,h表示树的深度,意味着根节点到这个一层要h步== ==2. 最优性当路径权重为1时,就是最短路== |算法|数据结构|空间复杂度|最优性| |: |: |: |: | |DFS|stack|O(h)|无最优性| |BFS
22
0
0
【ACWING】STL简单教程
摘要:[TOC] # 0 概述 - vector,变长数组,倍增思想:每次数组长度不够,就开一个2倍长度的新空间,然后原来的元素copy到新空间 > 倍增思想有一个好处,就是申请空间越频繁,效率越高 - string 字符串, substr(), c_str() - queue, 队列,push(),fr
34
0
0
【ACWING】 Trie树 并查集 堆
摘要:# 1 Tire树 ## Tire树的用途 高效的**存储和查找**字符串集合 > 我个人认为这个存储字符串的过程非常像哈夫曼树,但是这并不准确。 我过段时间有空会录一小段视频讲解这部分, # 2 并查集 非常常用的数据结构,思路非常巧妙。 # 3 堆 这里我们的堆构造成一维数组,从下标1开始存储,
22
0
0
【ACWING】KMP算法
摘要:==这两天在学习KMP算法==,是真的难。太抽象了而且不好理解,网上的教程太多了,而且不同教程之间在数组存储、next数组的定义上各有不同,所以看的我很混乱。 ### 这篇文章讲的是acwing基础课上的KMP算法 1. 字符数组下标从1开始存储 2. next数组表示前后缀公共部分的最大长度。 #
102
0
0
【ACWING】 链表与邻接表
摘要:本节内容中均采用数组来模拟这些数据结构,不采用struct方式,因为结构体的创建(new)比较费时。 笔试的时候可以这么写,面试的时候,随意,但是面试一般用struct就行了。 # 1 单链表 如何用数组来模拟单链表呢 如果按照标准的单链表结构体定义,如下 ```C++ //结构体定义单链表节点 t
40
0
0
1
点击右上角即可分享
微信分享提示
深色
回顶
收起