算法模板
文章平均质量分 72
你哥同学
这个作者很懒,什么都没留下…
展开
-
★【index】★常用算法模板和详解及相关例题分享(更新中)
索引基础算法模板数据结构模板搜索与图论模板数学算法模板动态规划模板贪心模板基础算法模板https://blog.csdn.net/lafea/article/details/107030989数据结构模板https://blog.csdn.net/lafea/article/details/107198935搜索与图论模板https://blog.csdn.net/lafea/article/details/107558527数学算法模板https://blog.csdn.net/lafe原创 2020-09-16 09:09:45 · 273 阅读 · 0 评论 -
高级数据结构:线段树
文章目录#写在前面#最大数----c++版#你能回答这些问题吗----c++版#区间的最大公约数----c++版#写在前面线段树里一般有俩个操作push_up 由子节点算父节点的信息push_down 把父节点的修改信息下传到子节点设倒数第二层有n个点,则除去最后一层有 2n-1 个点,加上最后一层的最坏情况(2n个点)一共有4n-1个点,对于长度为n的数组,一共有n个叶节点,其倒数第二层的点数必少于 n 个,不妨直接将倒数第二层的点设为n个直接开4n的数组还会有一些预留的空间#原创 2021-03-16 17:32:11 · 164 阅读 · 0 评论 -
高级数据结构:树状数组
文章目录#写在前面##楼兰图腾----c++版#写在前面https://baike.baidu.com/item/%E6%A0%91%E7%8A%B6%E6%95%B0%E7%BB%84/313739?fr=aladdin##楼兰图腾https://www.acwing.com/problem/content/243/----c++版原创 2021-03-09 14:55:44 · 107 阅读 · 0 评论 -
高级数据结构:并查集
文章目录#写在前面##格子游戏----c++版#写在前面基础并查集实现了合并两个集合查询某个元素的祖宗节点基本优化路径压缩 O(logn)按秩合并主要思想是合并集合时每次把树的深度较小的一个合并到深度较大的那一个代码比较长 O(logn)两个一起可以做到 O(α(n)) 反阿克曼函数-阿克曼函数阿克曼函数增长很快,反阿克曼函数增长很慢基本看成 O(1) 的并查集扩展记录一下每个集合的大小,将集合大小这个属性绑定到根节点上记录一下每个点到根节点的距离,这里需要绑原创 2021-01-29 17:31:51 · 188 阅读 · 0 评论 -
单源最短路的综合应用acm
单源最短路的综合应用#写在前面##新年好----c++版##通信线路----c++版##道路与航线----c++版##最优贸易----c++版#写在前面涉及最短路+DFS\二分\DP\拓扑排序##新年好https://www.acwing.com/problem/content/1137/----c++版#include<iostream>#include<algorithm>#include<cstring>using namespace std;原创 2020-11-30 18:07:41 · 212 阅读 · 0 评论 -
单源最短路的建图方式acm
单源最短路的建图方式#写在前面##热浪----c++版#写在前面一些例题##热浪https://www.acwing.com/problem/content/1131/----c++版原创 2020-11-26 14:59:42 · 257 阅读 · 0 评论 -
⭐--单源最短路的基础模板--⭐
index#写在前面#dijkstra##一----c++版##二 堆优化版----c++版#bellman-ford##有边数限制的最短路----c++版#spfa##spfa求最短路----c++版##spfa判断负环----c++版#写在前面https://blog.csdn.net/lafea/article/details/107811927#dijkstra##一----c++版https://www.acwing.com/problem/content/851/#include原创 2020-11-04 16:26:27 · 170 阅读 · 0 评论 -
DFS:迭代加深、双向dfs、IDA*优化
DFS常用技巧与优化#写在前面#写在前面原创 2020-11-04 16:11:20 · 505 阅读 · 0 评论 -
DFS:剪枝与优化例题与详解acm
剪枝与优化#写在前面#DFS之剪枝与优化##小猫爬山----c++版##数独----c++版##木棒----c++版##生日蛋糕----c++版#写在前面#DFS之剪枝与优化##小猫爬山https://www.acwing.com/problem/content/167/----c++版#include<iostream>#include<algorithm>#include<cstring>//1.优先放重猫//2.可行性减枝//3.最优性剪原创 2020-10-19 17:45:05 · 341 阅读 · 0 评论 -
DFS:连通性与搜索顺序例题与详解acm
连通性与搜索顺序#写在前面#DFS之连通性模型##迷宫----c++版##红与黑----c++版#DFS之搜索顺序##n皇后----c++版##马走日----c++版##单词接龙----c++版##互分质数组----c++版#写在前面无#DFS之连通性模型只在同一个地图(状态)间走,不用回溯##迷宫https://www.acwing.com/problem/content/1114/----c++版#include<iostream>#include<algorith原创 2020-10-19 17:41:28 · 400 阅读 · 0 评论 -
BFS:双向广搜、A*优化
双向广搜、A*优化#写在前面#双向广搜##字串变换----c++版#A*优化##八数码之A*优化版----c++版##第K短路----c++版#写在前面无#双向广搜从两个方向同时搜索双向广搜一般用在最小步数模型的题目里一个点扩展出的点比较多(指数级别)##字串变换https://www.acwing.com/problem/content/192/----c++版#include<iostream>#include<cstring>#include<原创 2020-10-19 17:26:12 · 359 阅读 · 1 评论 -
BFS:多源BFS、最小步数模型、双端队列广搜
多源BFS、最小步数模型、双端队列广搜#写在前面#多源BFS##矩阵距离----c++版#最小步数模型##八数码----c++版##魔板----c++版#双端队列广搜##电路维修----c++版#写在前面无#多源BFS##矩阵距离https://www.acwing.com/problem/content/175/曼哈顿距离:行和列距离之和----c++版#include<iostream>#include<algorithm>#include<cstri原创 2020-10-19 17:22:53 · 291 阅读 · 0 评论 -
BFS:单源最短路模型与题目详解acm
单源最短路模型#写在前面##走迷宫----c++版##迷宫问题----c++版##武士风度的牛----c++版##抓住那头牛----c++版#写在前面bfs能求出 所有边权==1 的 单源最短路问题 的证明(可以看成是特殊的djikstra)##走迷宫----c++版https://www.acwing.com/problem/content/description/846/#include<iostream>#include<algorithm>#includ原创 2020-10-19 17:17:07 · 256 阅读 · 0 评论 -
BFS:flood-filled模型与题目详解acm
flood-filled模型#写在前面##池塘计数----c++版##城堡问题----c++版##山峰和山谷----c++版#写在前面洪水覆盖算法就是染色法百度一下呗不一定要用bfs实现可以在线性时间复杂度内,找到某个点所在的连通块##池塘计数https://www.acwing.com/problem/content/1099/----c++版#include<iostream>#include<algorithm>#define x first#de原创 2020-10-19 17:13:18 · 297 阅读 · 0 评论 -
详解康托展开与逆康托展开
康托展开rank=an(n−1)!+an−1(n−2)!+⋯+a10!再举个例子说明。在(1,2,3,4,5)5个数的排列组合中,计算 34152的康托展开值。首位是3,则小于3的数有两个,为1和2,a[5]=2,则首位小于3的所有排列组合为 a[5]*(5-1)!第二位是4,则小于4的数有两个,为1和2,注意这里3并不能算,因为3已经在第一位,所以其实计算的是在第二位之后小于4的个数。因此a[4]=2第三位是1,则在其之后小于1的数有0个,所以a[3]=0第四位是5,则在其之后小于5的数有1原创 2020-10-13 16:11:35 · 308 阅读 · 0 评论 -
斜率优化(凸包优化)DP问题acm
斜率优化(凸包优化)Dp#写在前面##任务安排1----c++版##任务安排2----c++版##任务安排3----c++版##运输小猫----c++版#写在前面这类问题做的过程比较偏数学对于状态转移方程需要经过一些数学上的整理之后几道题步步深入斜率优化问题##任务安排1https://www.acwing.com/problem/content/302/----c++版#include<iostream>#include<algorithm>using na原创 2020-10-09 23:57:56 · 2167 阅读 · 0 评论 -
单调队列优化DP问题acm
单调队列优化Dp#写在前面##最大子序和----c++版##旅行问题----c++版#写在前面基础数据结构里有滑动窗口从正确的朴素dp再到优化多重背包问题3就是一道单调队列优化的Dp问题##最大子序和https://www.acwing.com/problem/content/137/----c++版//滑动窗口+前缀和#include<iostream>#include<algorithm>using namespace std;#include<原创 2020-10-08 23:04:38 · 163 阅读 · 0 评论 -
数位Dp模型与题目详解acm
数位DP模板#写在前面##度的数量----c++版##数字游戏----c++版##windy数----c++版## 数字游戏 II----c++版##不要62----c++版##恨7不成妻----c++版#写在前面树的形式是一种分类讨论的思想##度的数量https://www.acwing.com/problem/content/1083/可以看到我们用了类似一棵树的形式讨论问题这里注意,当B进制下n的某一位上已经是1的时候,我们是直接轮到下一位上进行讨论的,所以当最末尾一位是1且刚好满足原创 2020-10-04 14:38:14 · 332 阅读 · 0 评论 -
树形DP模型与题目详解acm
树形DP问题#写在前面##没有上司的舞会----c++版##树的最长路径----c++版#写在前面##没有上司的舞会https://www.acwing.com/problem/content/287/----c++版#include<iostream>#include<algorithm>#include<cstring>using namespace std;//有两种状态 f[u,0]: 所有从以u为根的子树中选择,并且不选u这个点的方案//原创 2020-10-01 14:53:16 · 285 阅读 · 0 评论 -
区间DP模型与题目详解acm
区间DP问题#写在前面##石头合并----c++版##环形石头合并----c++版##能量项链----c++版##凸多边形的划分----c++版##加分二叉树----c++版##棋盘分割----c++版#写在前面一般有两种实现方式##石头合并https://www.acwing.com/problem/content/284/----c++版#include<iostream>#include<algorithm>using namespace std;原创 2020-09-28 12:01:08 · 283 阅读 · 0 评论 -
状态压缩模型与题目详解acm_t
状态压缩模型#写在前面#递归实现指数型枚举----c++版#棋盘式##蒙德里安的梦想----c++版##小国王----c++版##玉米田----c++版##炮兵阵地----c++版#集合式##最短hamilton路径----c++版##愤怒的小鸟----c++版#写在前面状态压缩分为两大类棋盘式(基于连通性)集合#递归实现指数型枚举https://www.acwing.com/problem/content/94/状态压缩就是用一个二进制数来表示某一位上的东西取还是不取9-------原创 2020-09-25 14:31:09 · 266 阅读 · 0 评论 -
状态机模型与题目详解acm_t
状态机模型#写在前面##大盗啊福----c++版##股票买卖4----c++版##股票买卖5----c++版##设计密码----c++版#写在前面状态机描述的是一系列有顺序的事件状态机可以把事件中的各个状态描述清楚01背包对每个物品只有选与不选,这不是一个连续的过程状态机描述的是一个过程,不是结果先有几种状态(几个点),每个状态之间有一些有向边(通道),状态可以通过通道转换,每一次转换相当于走了一步。当走过k步时,可以有很多种走法。状态机和状态压缩dp是并列的两个知识点##大盗啊福ht原创 2020-09-21 10:39:20 · 455 阅读 · 0 评论 -
背包模型与题目详解acm
背包问题##01背包问题----c++版##完全背包问题----c++版##多重背包问题1----c++版##多重背包问题2----c++版##多重背包问题3----c++版##分组背包问题----c++版##采药----c++版##装箱问题----c++版acwing题库##01背包问题https://www.acwing.com/problem/content/2/每件物品只有一个----c++版最朴素版#include<iostream>#include<al原创 2020-09-20 13:20:18 · 328 阅读 · 0 评论 -
最长上升子序列模型与题目详解acm
LIS问题##最长上升子序列----c++版##最长上升子序列2----c++版##怪盗基德的滑翔翼----c++版##登山----c++版##合唱队形----c++版##友好城市----c++版acwing题库##最长上升子序列https://www.acwing.com/problem/content/897/----c++版#include<iostream>#include<algorithm>using namespace std;const int原创 2020-09-12 10:39:40 · 352 阅读 · 0 评论 -
数字三角形模型与题目详解acm
数字三角形模型#线性Dp##数字三角形----c++版#线性Dp##数字三角形https://www.acwing.com/problem/content/900/----c++版正序dp#include<iostream>#include<algorithm>using namespace std;const int N=510,inf=1e9;int n;int a[N][N];int f[N][N];int main(){ sc原创 2020-09-01 22:02:12 · 304 阅读 · 0 评论 -
贪心算法板子库
贪心算法板子库#区间问题##区间选点----c++版这里的python全是python3的详情请见acwing,acwing赛高力求快、准、狠、短#区间问题##区间选点----c++版原创 2020-08-30 21:52:18 · 362 阅读 · 0 评论 -
动态规划板子库
动态规划板子库#背包问题##01背包问题----c++版##完全背包问题----c++版##多重背包问题1----c++版##多重背包问题2----c++版##分组背包问题----c++版#线性Dp##数字三角形----c++版##最长上升子序列----c++版这里的python全是python3的详情请见acwing,acwing赛高力求快、准、狠、短#背包问题##01背包问题https://www.acwing.com/problem/content/2/每件物品只有一个----c+原创 2020-08-28 10:39:51 · 403 阅读 · 1 评论 -
数学算法板子库
数学算法板子库#质数##试除法判断质数----c++版##试除法分解质因数----c++版##质数筛----c++版埃氏筛----c++版线性筛#约数##试除法求约数----c++版##约数个数----c++版##约数之和----c++版##最大公约数(欧几里得算法/辗转相除法)----c++版#欧拉函数----c++版##筛法求欧拉函数----c++版这里的python全是python3的详情请见acwing,acwing赛高力求快、准、狠、短#质数##试除法判断质数----c++版#in原创 2020-08-20 00:49:48 · 229 阅读 · 1 评论 -
搜索与图论板子库
搜索与图论搜索与图论#DFS##全排列##n皇后#BFS##走迷宫##八数码#树与图的深度优先遍历##树的重心#树与图的广度优先遍历##图中点的层次#拓扑排序##有向图的拓扑序列#dijkstra##一##二#bellman-ford#spfa#floyd#prim#kruskal#染色法判定二分图#匈牙利算法这里的python全是python3的详情请见acwing,acwing赛高力求快、准、狠、短搜索与图论#DFS##全排列##n皇后#BFS##走迷宫##八数码#树与图的深度优原创 2020-08-08 03:50:10 · 62553 阅读 · 0 评论 -
ACM:关于最短路问题
关于最短路问题最短路问题是图论的问题,算法的模板很重要,会建图很重要n是点数,m是边数m接近n^2,稠密图,用邻接矩阵存m接近n,稀疏图#mermaid-svg-PYn3inyM4HrzAtbB .label { font-family: 'trebuchet ms', verdana, arial; font-family: var(--mermaid-font-family); fill: #333; color: #333; }#mermaid-svg-PYn3i原创 2020-08-05 12:06:09 · 159 阅读 · 0 评论 -
c++:HDU 3410 Passing the Message
Passing the MessageTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1222 Accepted Submission(s): 798Problem DescriptionWhat a sunny day! Let’s go picnic and have barbecue! Today, all kids in “Su原创 2020-08-03 02:16:50 · 191 阅读 · 0 评论 -
c++:排列与组合
index全排列组合递归写法非递归位运算的神奇规律算组合数全排列https://www.acwing.com/problem/content/844/#include<iostream>using namespace std;const int N = 10;int n;int path[N];bool st[N];void dfs(int u){ if(u==n){ for(int i=0;i<n;i++)printf("%d ",path[原创 2020-07-31 23:35:05 · 471 阅读 · 0 评论 -
并查集:习题增补
1.连通块中点的数量https://www.acwing.com/problem/content/839/这里追踪了每个连通块的大小#include<iostream>#include<cstring>using namespace std;const int N=1e5+10;int f[N],w[N];int find(int x){ while(f[x]!=x)x=f[x]; return f[x];}//与模板中的不同,这是循环的写法int原创 2020-07-10 10:01:29 · 125 阅读 · 0 评论 -
trie数:最大异或对
最大异或对https://www.acwing.com/problem/content/145/#include<iostream>#include<algorithm>using namespace std;const int N=100010;int a[N],son[N*31][2];//二维数组son存的是节点的下标//第一维存下标的值,第二维代表儿子,//由于int有32位,所以最多需要节点N*31个int n,idx;void insert(int原创 2020-07-09 10:36:49 · 176 阅读 · 0 评论 -
数据结构板子库
基础数据结构数据结构#单链表----c++版#双链表----c++版#栈----c++版#队列----c++版#单调栈----c++版#单调队列----c++版#KMP算法----c++版#Trie字典树----c++版#并查集----c++版#堆----c++版#哈希表----c++版这里的python全是python3的详情请见acwing,acwing赛高力求快、准、狠、短数据结构#单链表----c++版数组模拟链表https://www.acwing.com/problem/con原创 2020-07-08 10:35:54 · 302 阅读 · 0 评论 -
基础算法板子库
基础板子库基础算法-快速排序详情请见acwing,acwing赛高基础算法-快速排序#include<iostream>using namespace std;const int n = 1e6+10;int a[N];void qs(int q[], int l, int r){ if(l原创 2020-06-30 01:01:45 · 460 阅读 · 0 评论