![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法基础
文章平均质量分 59
素位明哲
这个作者很懒,什么都没留下…
展开
-
算法基础之贪心:排序不等式、绝对值不等式、推公式
文章1、排序不等式1.1、排队打水2、绝对值不等式2.1、货仓选址3、推公式3.3、撒杂技的牛1、排序不等式1.1、排队打水#include <iostream>#include <algorithm>using namespace std;typedef long long LL;const int N = 100010;int n;int t[N];int main(){ scanf("%d", &n); for (int原创 2021-12-13 16:02:52 · 829 阅读 · 0 评论 -
算法基础之贪心:区间问题、huffman树
目录1、区间问题1.1、区间选点1.2、最大不相交区间数量1.3、区间分组1.4、区间覆盖2、huffman树2.1、合并果子1、区间问题1.1、区间选点#include <iostream>#include <algorithm>using namespace std;const int N = 100010;int n;struct Range{ int l, r; bool operator< (const Range &原创 2021-12-12 21:24:35 · 379 阅读 · 0 评论 -
算法基础之数位统计dp、状态压缩dp、树形dp、记忆化搜索
题目1、数位统计dp1.1 计数问题2、状态压缩dp2.1 蒙德里安的梦想2.2、最短Hamilton路径3、树形dp3.1、没有上司的舞会4、记忆化搜索4.1、滑雪1、数位统计dp1.1 计数问题2、状态压缩dp2.1 蒙德里安的梦想2.2、最短Hamilton路径3、树形dp3.1、没有上司的舞会4、记忆化搜索4.1、滑雪...原创 2021-12-09 19:09:33 · 755 阅读 · 0 评论 -
算法基础之线性dp与区间dp与计数类dp
目录1、线性dp1.1、数字三角形1.2、最长上升子序列1.3、最长上升子序列21.4、最长公共子序列1.5、最短编辑距离1.6、编辑距离2、区间dp2.1、石子合并1、线性dp1.1、数字三角形1.2、最长上升子序列1.3、最长上升子序列21.4、最长公共子序列1.5、最短编辑距离1.6、编辑距离2、区间dp2.1、石子合并...原创 2021-12-06 21:33:29 · 516 阅读 · 0 评论 -
算法基础之背包问题
目录1、背包问题1.1、01背包问题1.2、完全背包问题1.3、多重背包问题1.4、多重背包问题21.5、分组背包问题1、背包问题1.1、01背包问题#include <iostream>#include <algorithm>using namespace std;const int N = 1010;int n, m;int v[N], w[N];int f[N];int main(){ cin >> n >> m原创 2021-12-05 22:10:58 · 567 阅读 · 0 评论 -
算法基础之容斥原理、博弈论
目录1、容斥原理1.1、能被整除的数2、博弈论2.1、Nim游戏2.2、台阶Nim游戏2.3、集合Nim游戏2.4、拆分Nim游戏1、容斥原理1.1、能被整除的数2、博弈论2.1、Nim游戏2.2、台阶Nim游戏2.3、集合Nim游戏2.4、拆分Nim游戏...原创 2021-12-01 22:19:30 · 2484 阅读 · 1 评论 -
算法基础之高斯消元、求组合数
目录1、高斯消元1.1、高斯消元解线性方程组1.2、高斯消元解异或线性方程组2、求组合数2.1、求组合数12.2、求组合数22.3、求组合数32.4、求组合数42.5、满足条件的01序列 卡特兰数1、高斯消元1.1、高斯消元解线性方程组#include <iostream>#include <algorithm>#include <cmath>using namespace std;const int N = 110;const double ep原创 2021-11-29 16:41:08 · 638 阅读 · 0 评论 -
算法基础之欧拉函数、快速幂、扩展欧几里得算法和中国剩余定理
1、欧拉函数2、快速幂3、扩展欧几里得算法4、中国剩余定理原创 2021-11-27 16:55:30 · 428 阅读 · 0 评论 -
算法基础之质数与约数
目录1、大纲2、质数2.1、试除法判定质数2.2、分解质因数2.3、筛质数3、约数3.1、试除法求约数3.2、约数个数3.3、约数之和3.4、最大公约数1、大纲2、质数2.1、试除法判定质数#include <iostream>#include <algorithm>using namespace std;bool is_prime(int x){ if (x < 2) return false; for (int i = 2; i原创 2021-11-24 22:10:23 · 532 阅读 · 0 评论 -
算法基础之最小生成树与二分图
目录1、大纲2、最小生成树2.1、Prim2.2、Kruskal3、二分图3.1、染色法判定二分图3.2、匈牙利算法1、大纲2、最小生成树2.1、Prim#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int N = 510, INF = 0x3f3f3f3f;int n, m;//prim算法适合稠密图,加上本题也是稠密原创 2021-11-23 19:48:00 · 261 阅读 · 0 评论 -
算法基础之Dijkstra、bellman-ford、spfa、Floyd
目录1、大纲2、单源最短路径2.1、Dijkstra 正权边2.1.1 朴素Dijkstra做法2.1.2、堆优化后的dijkstra算法2.2、bell-man ford 负权边2.2.1、有边数限制的最短路2.3、 spfa 负权边2.3.1、spfa求最短路2.3.2、spfa判断负环3、多源最短路径 floyd1、大纲2、单源最短路径2.1、Dijkstra 正权边2.1.1 朴素Dijkstra做法#include <cstring>#include <iostre原创 2021-11-18 18:28:37 · 431 阅读 · 0 评论 -
算法基础之DFS、BFS、树与图的存储、树与图的DFS和BFS、拓扑排序
目录1、DFS1.1、 DFS与BFS的对比1.2、排列数字1.3、 n-皇后问题1.3.1 全排列顺序搜索1.3.2 按每个格子的顺序枚举2、BFS2.1、走迷宫2.1.1 数组模拟队列实现2.1.2 queue实现1、DFS1.1、 DFS与BFS的对比1.2、排列数字#include<iostream>using namespace std;const int N=10;int n;int num[N];bool st[N];void dfs(int u原创 2021-11-15 18:25:18 · 720 阅读 · 0 评论 -
算法基础之哈希表与STL
目录1、哈希表1.1、哈希表的作用1.2模拟散列表1.2.1 拉链法1.2.2 开放寻址法1.2.3 memset1.3 字符串哈希2、STL1、哈希表1.1、哈希表的作用1.2模拟散列表离散化也将大的数据范围映射到小的数据范围中,是一种特殊的哈希。今天的哈希是无序的,而离散化中的数据是单调递增的。1.2.1 拉链法#include <cstring>#include <iostream>using namespace std;cons原创 2021-11-13 17:44:11 · 434 阅读 · 0 评论 -
算法基础值之单链表、双链表、栈、队列、单调栈、单调队列以及KMP
目录1.单链表1.1用数组模拟单链表1.2 初始化1.3 将x插入头结点1.4 将x插入到k节点的后面1.5 删除操作1.6 单链表2. 双链表2.1 初始化2.2 在一个节点的右边插入一个点2.3 在一个节点的左边插入一个点2.4 删除节点2.5 代码1.单链表1.1用数组模拟单链表不用结构体,速度很慢。用数组模拟链表。空节点用-1表示1.2 初始化1.3 将x插入头结点1.4 将x插入到k节点的后面1.5 删除操作1.6 单链表ide -》idx#i原创 2021-10-26 18:44:42 · 622 阅读 · 0 评论 -
算法基础之双指针算法、位运算、离散化、区间合并
目录1、双指针算法1.1、指向两个序列的双指针1.2、指向一个序列的双指针1.3 双指针算法的通用模板1.4 双指针算法的核心思想1.5 例子:输出句子中的单词1.6 最长连续不重复子序列1.7 双指针思路总结1、双指针算法1.1、指向两个序列的双指针归并排序利用了双指针算法一个指针指向一个序列,另外一个指针指向另一个序列。1.2、指向一个序列的双指针例如:快速排序1.3 双指针算法的通用模板1.4 双指针算法的核心思想1.5 例子:输出句子中的单词1.6 最长连续不重复子原创 2021-10-24 23:26:45 · 480 阅读 · 0 评论 -
算法基础之高精度、前缀和 以及差分
目录1、高精度1.1、计算数据的长度1.2、大整数存储方式1.3、计算:模拟人工计算、1.3.1 加法1.3.2 减法1、高精度1.1、计算数据的长度大整数的长度小于10的6次方1.2、大整数存储方式把个位存到数组中的第0位,把最高位存在数组中的最后一位。因为如果需要进位的时候直接在数组末尾添加上数字比较容易。1.3、计算:模拟人工计算、A(i)+B(i)+进位1.3.1 加法1.3.2 减法...原创 2021-10-21 22:47:07 · 304 阅读 · 0 评论 -
算法基础之排序与二分
目录1、排序1.1、章节思路2.2 快速排序2.2.1 快排模板2.2.2 快排死循环2.2.3 快排最优解1、排序1.1、章节思路2.2 快速排序暴力做法优美做法 一个头指针,一个尾指针。直到 i和j相遇为止。 任何时候i左边的数小于等于x,j右边的数大于等于x。模拟数据准备交换。交换之后,两个数字向中间移动一位。此时i指针前(不包括i)所有数<=3j指针后(不包括j)所有数>=32.2.1 快排模板2.2.2 快排死循环这样写会出现死循原创 2021-10-17 22:30:45 · 98 阅读 · 0 评论