- 博客(22)
- 收藏
- 关注
原创 图论-最小生成树-kruskal
时间复杂度(O(mlogN)O(mlogN)O(mlogN)) 模板 struct Node{ int a, b, w; bool operator< (const Node& t) const { return w < t.w; } }e[M]; for (int i = 0; i < m; i ++ ) { int a, b, c; scanf("%d%d%d", &a, &b, &
2022-05-10 22:56:01
135
原创 图论-最小生成树-prim
时间复杂度(O(n2)O(n^2)O(n2)) 模板 int prim() { memset(dist, 0x3f, sizeof dist); int res = 0; for (int i = 0; i < n; i ++ ) { int t = -1; for (int j = 1; j <= n; j ++ ) if (!st[j] && (t == -1 || dist[t] &g
2022-05-10 19:35:08
132
原创 数据结构-树状数组
模板 int lowbit(int x) { return x & -x; } //修改数据 int add(int x, int c) { for (int i = x; i <= n; i += lowbit(i)) tr[i] += c; } //求和 int sum(int x) { int res = 0; for (int i = x; i; i -= lowbit(i)) res += tr[i]; return res; } //初始化 for (int i = 1;
2022-05-04 20:53:46
72
原创 数据结构-并查集
模板 //查询祖宗节点 int find(int x) { if (p[x] != x) p[x] = find(p[x]); return p[x]; } //合并两个集合 p[find(a)] = find(b); //初始化 for (int i = 1; i <= n; i ++ ) p[i] = i;
2022-05-04 20:41:19
352
原创 数据结构-队列
模板 int q[N]; int hh = 0; tt = -1; //入队 q[ ++ tt] = x; //出队 hh ++ ; //取队头 int x = q[hh]; while (hh <= tt) //队列不空 { }
2022-05-04 20:04:58
196
原创 数据结构-栈
模板 int stack[N]; int tt = 0; //入栈 stack[ ++ tt] = x; //取栈顶 int x = stack[tt]; //出栈 tt -- ;
2022-05-04 19:59:53
186
原创 数据结构-链表
模板 const int N = 100, M = 100; int h[N], e[M], ne[M], idx; //加点 void add(int a, int c) { e[idx] = b, ne[idx] = h[a], h[a] = idx ++ ; } //遍历 for (int i = h[a]; ~i; i = ne[i]) { } int main() { memset(h, -1, sizeof h); //表头要初始化为-1 return 0; } ...
2022-05-04 19:47:37
188
原创 图论-单源最短路算法-spfa
时间复杂度O(m)O(m)O(m)~O(n∗m)O(n*m)O(n∗m) 模板 int spfa() { memset(dist, 0x3f, sizeof dist); dist[1] = 0; queue<int> q; q.push(1); st[1] = true; while (q.size()) { int t = q.front(); q.pop(); st[t] = fa
2022-05-04 19:37:13
104
原创 图论-单源最短路算法-dijkstra堆优化版
时间复杂度O(m∗logn)O(m*logn)O(m∗logn) 模板 int dijkstra() { memset(dist, 0x3f, sizeof dist); dist[1] = 0; priority_queue<PII, vector<PII>, greater<PII>> heap; heap.push({0, 1}); while(heap.size()) { auto t = hea
2022-05-04 19:31:46
124
原创 图论-单源最短路算法-dijkstra朴素版
时间复杂度:O(n2)O(n^2)O(n2) 模板 void dijkstra() { memset(dist, 0x3f, sizeof dist); dist[1] = 0; //遍历n次,每次把一个dist最小的点放入集合中 for (int i = 1; i <= n; i ++ ) { int t = -1; for (int j = 1; j <= n; j ++ ) //如果j点没被使用
2022-05-04 19:25:42
314
原创 动态规划-数位DP
一些题目有这样的规律:求一段区间内xx的个数是多少。xx描述了要求的数具有的性质。假设求[l, r]这个区间,可以处理成求dp(r) - dp(l - 1)。 例:科协里最近很流行数字游戏。某人命名了一种不降数,这种数字必须满足从左到右各位数字成小于等于的关系,如 123,446。现在大家决定玩一个游戏,指定一个整数闭区间 [a,b],问这个区间内有多少个不降数。 现在假设一个n位数为N,我们求1~N之间的不降数数量。 将N按数位从高到低拆开。 可以使用vector来存while (n) nums.push
2022-04-19 21:56:20
2726
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人