树
算法的数论
skyyemperor
hello!!远方的朋友,很幸运,遇见你。
个人博客网站 https://blog.skyemperor.top 欢迎来访。。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
主席树
分析 一、 离散化 int getId(int x) { return lower_bound(v.begin(), v.end(), x) - v.begin() + 1; } for (int i = 1; i <= n; i++) { sc(a[i]); v.push_back(a[i]); } sort(v.begin...原创 2020-02-20 09:25:35 · 163 阅读 · 0 评论 -
最小生成树
分析 克鲁斯卡尔算法 算法思想:将所有边按照边权最小到大排序,依次枚举所有的边,如果边的两个端点已经在同一个集合中(可连通),就continue,否则合并边的两个端点(将边权加入到答案中),直到有n-1条边参与合并为止。 最后如何判断这个生成的子图是不是树? 代码 #include<iostream> #include<stdio.h> #include<...原创 2020-02-20 09:24:45 · 142 阅读 · 0 评论 -
树状数组
一、 树状数组介绍 黑色数组代表原来的数组(下面用A[i]代替),红色结构代表我们的树状数组(下面用C[i]代替),发现没有,每个位置只有一个方框,令每个位置存的就是子节点的值的和,则有 C[1] = A[1]; C[2] = A[1] + A[2]; C[3] = A[3]; C[4] = A[1] + A[2] + A[3] + A[4]; C[5] = A[5]; C[6...原创 2020-01-22 18:10:43 · 166 阅读 · 0 评论 -
Lazy Tag 查询Sum && 区间更新
1.Lazy Tag 查询Sum void pushdown(int sn) { if (node[sn].add != 0) { node[sn * 2].add += node[sn].add; node[sn * 2 + 1].add += node[sn].add; node[sn * 2].sum += node[sn].add...原创 2020-01-21 13:01:40 · 163 阅读 · 0 评论 -
建树 && 单点更新 && 查询最高
目录 题目: 题目分析: 一、 build 二、 查询最高的成绩: 三、 更新最大值 四、 若单点更新值,求sum 题目: 本题目包含多组测试,请处理到文件结束。 在每个测试的第一行,有两个正整数 N 和 M ( 0<N<=200000,0<M<5000 ),分别代表学生的数目和操作的数目。 学...原创 2020-01-21 12:05:34 · 203 阅读 · 1 评论 -
并查集
一、题目 输入以整数T(1<=T<=25)开始,表示测试用例的数量。接下来是T个测试用例。每个测试用例以两个整数N和M(1<=N,M<=1000)开头。N表示朋友的数量,从1到N标记朋友,然后M行跟随。每一行包含两个整数A和B(A!=B),意思是朋友A和朋友B互相认识。两个案子之间会有一个空行。不认识的朋友不在一张桌子,求至少需要多少桌子。 二、解析 找到x的掌门人 i...原创 2020-02-20 09:20:31 · 111 阅读 · 0 评论
分享