- 博客(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
99
原创 图论-最小生成树-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
103
原创 数据结构-树状数组
模板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
44
原创 数据结构-并查集
模板//查询祖宗节点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
313
原创 数据结构-队列
模板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
165
原创 数据结构-栈
模板int stack[N];int tt = 0;//入栈stack[ ++ tt] = x;//取栈顶int x = stack[tt];//出栈tt -- ;
2022-05-04 19:59:53
163
原创 数据结构-链表
模板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
158
原创 图论-单源最短路算法-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
67
原创 图论-单源最短路算法-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
84
原创 图论-单源最短路算法-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
278
原创 动态规划-数位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
2655
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人