数据结构与算法
ACM数据结构与算法
unravel_CAT
All the suffering in this world is born from an individual's incompetence!
展开
-
Dijkstra【模板】【邻接表+优先队列】
**时间复杂度:**O((n+m)logm)#include <iostream>#include <queue>#include <cstring>using namespace std;#define MP make_pairconst int N=100010,M=200010;const int inf=0x7fffffff;int fr[N],nex[N],dis[N];//邻接表结点数组和距离数组,dis[i]表示源点到i点距离。int v原创 2021-07-09 15:50:43 · 257 阅读 · 0 评论 -
快速幂+矩阵快速幂【模板】
一、快速幂标题算法思想或步骤:将阶数b转换为二进制,从后往前取每一位,如果是1就改变res, 其中,res表示有选择的乘以底数a的自乘(a, a^2 , a^4, a^8,…)。第1次,第2次,第3次,第4次…判断b的末尾位是否为1,为1就res=res*a,否则res不变;而a始终在自乘变化。最后返回res%mod,就是 (a^b)%mod.代码:long long ksm(long long a,long long b,int mod){ long long res=1; while(b)原创 2021-07-09 15:48:57 · 134 阅读 · 0 评论 -
最小生成树MST【模板】 【kruskal】
算法思想或步骤:1.将图中的边按照从小到大排序.2.按照权值从小到大依次选边。如果当前选取的边使边形成了圈,则舍弃;否则标记当前边并计数。(利用并查集判断是否会形成环)3.重复(2)的操作,直到生成树包含n-1条边;否则无法形成最小生成树。代码:#include <iostream>#include <algorithm>using namespace std;const int N=5010,M=10010;int n,m,f[N],ans=0;struct原创 2021-09-08 12:07:23 · 178 阅读 · 0 评论 -
#动态规划简介及步骤
动态规划一、算法介绍(参考百度)在现实生活中,有一类活动的过程,由于它的特殊性,可将过程分成若干个互相联系的阶段,在它的每一阶段都需要作出决策,从而使整个过程达到最好的活动效果。因此各个阶段决策的选取不能任意确定,它依赖于当前面临的状态,又影响以后的发展。当各个阶段决策确定后,就组成一个决策序列,因而也就确定了整个过程的一条活动路线.这种把一个问题看作是一个前后关联具有链状结构的多阶段过程就称为多阶段决策过程,这种问题称为多阶段决策问题。在多阶段决策问题中,各个阶段采取的决策,一般来说是与时间有关的,决转载 2020-08-21 10:41:21 · 201 阅读 · 0 评论