个人学习笔记平台,欢迎大家交流

红叶~

Be humble, communicate clearly, and respect others.

随笔分类 -  算法学习

摘要:例题 指数型枚举 输入样例: 3 输出样例: 3 2 2 3 1 1 3 1 2 1 2 3 题解: #include<iostream> using namespace std; const int N = 20; bool st[N]; int m; // 要输入的整数 void dfs(int 阅读全文
posted @ 2022-02-16 00:01 红叶~ 阅读(44) 评论(0) 推荐(0) 编辑
摘要:并查集 并查集可用来解决一些元素分组的问题,管理一系列不相交的集合 合并:把不相交的集合合并到一个集合 查询:查询两个元素是否在同一集合 原理 起初有1~n个元素,它们分别指向自己,父节点即为自己 当两个元素要合并时,用其中一个元素指向另外一个fa[i] = j, 代表 i 的父元素是 j 。 查询 阅读全文
posted @ 2022-02-15 23:32 红叶~ 阅读(22) 评论(0) 推荐(0) 编辑
摘要:一、堆的概念测试 1、堆的性质 是一颗完全二叉树 每个节点的值都大于或等于子节点的值,为最大堆;反之为最小堆 2、堆的存储 一般用数组来表示堆,下标从0开始。则下标为 i 的节点的父节点下标为(i-1)/2,其左右子节点分别为(2i + 1)、(2i + 2)。 下标从1开始 左右节点2i 、 2i 阅读全文
posted @ 2022-02-15 23:30 红叶~ 阅读(72) 评论(0) 推荐(0) 编辑
摘要:分解质因数 #include<iostream> #include<cmath> #include<cstring> using namespace std; int main() { int n; cin >> n; while(n--) { int x; cin >> x; for(int i 阅读全文
posted @ 2022-02-15 23:22 红叶~ 阅读(25) 评论(0) 推荐(0) 编辑
摘要:诶式筛法 void get_primes2() { for(int i = 2; i <= n;i++) { if(!st[i]){ primes[cnt++] = i; // 把素数存起来 for(int j = i + i; j <= n;j += i) st[j] = true; // 把质数 阅读全文
posted @ 2021-12-26 15:46 红叶~ 阅读(40) 评论(0) 推荐(0) 编辑
摘要:背包模板 01背包问题 朴素写法 #include<iostream> #include<algorithm> using namespace std; const int N = 1010; int v[N], w[N]; int f[N][N]; int main() { int n, m; c 阅读全文
posted @ 2021-12-26 15:43 红叶~ 阅读(41) 评论(0) 推荐(0) 编辑
摘要:图算法(数组版) 1.1最短路径Dijkstra算法 假设顶点是\(V_0到V_5\) 六个点,开始时候是没有连线的,但是已知能互相到达的顶点之间的边权。 步骤是每次从顶点0开始查找,找出距离顶点最短的点,然后标记该点为true,再查询该点能直达的其他点加上边权会不会比原先记录的距离值小 >即更新最 阅读全文
posted @ 2021-12-26 15:42 红叶~ 阅读(273) 评论(0) 推荐(0) 编辑
摘要:单链表 模板 #include<iostream> using namespace std; const int N = 100010; int idx, a[N], ae[N]; int head; // idx 表示当前还未填入的数,可以表示第几个插入的顺序,不过从0开始 // a[i]表示第 阅读全文
posted @ 2021-12-26 15:40 红叶~ 阅读(51) 评论(0) 推荐(0) 编辑
摘要:快排 void quick_sort(int q[], int l, int r) { if (l >= r) return; int i = l - 1, j = r + 1, x = q[l + r >> 1]; while (i < j) { while (q[++ i] < x); whil 阅读全文
posted @ 2021-12-26 15:38 红叶~ 阅读(52) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2021-11-27 12:29 红叶~ 阅读(0) 评论(0) 推荐(0) 编辑