树
文章平均质量分 51
misayap
靴薛珂熬鳃,那锅积尽派。
——silimer
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[luogu]P1090合并排序-堆
这个是堆的作法,速度很快,只有20ms左右,插排的那个要940-960ms 题面另一篇里有 #include using namespace std; int siz,n,x,hp[10005],sm; int p,q; void pus(int x) { siz++; hp[siz]=x; int now=siz; while(now>1) { if(hp[now]>原创 2017-12-10 16:04:21 · 247 阅读 · 0 评论 -
线段树
操作(初始化,单个点的修改,区间的修改,区间查询,lazy标记)//线段树 //每个节点代表一段区间 除叶节点外均有左右子节点 //左子节点:[L,(L+R)/2] 右子节点:[(L+R)/2+1,R] 叶节点长度为1 #include<iostream> #include<cstdio> #include<cstring> #include<c...原创 2018-02-10 00:49:08 · 178 阅读 · 0 评论 -
[poj]P1655树的重心
题目:http://poj.org/problem?id=1655 题意:给定一棵树,求树的重心的编号以及重心删除后得到的最大子树的节点个数size,如果size相同就选取编号最小的. 分析:首先要知道什么是树的重心,树的重心定义为:找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重 心后,生成的多棵树尽可能平衡.原创 2017-12-06 00:16:14 · 295 阅读 · 0 评论 -
[luogu]P1364医院设置
设有一棵二叉树,如图: 【我是图】 其中,圈中的数字表示结点中居民的人口。圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接点之间的距离为1。如上图中, 若医院建在1 处,则距离和=4+12+2*20+2*40=136;若医院建在3 处,则距离和=4*2+13+20+40=81…… 输入输出格式 输入格式: 第原创 2017-12-03 22:04:32 · 421 阅读 · 0 评论 -
[luogu]P1631序列合并-堆排的套路运用
题目描述 有两个长度都是N的序列A和B,在A和B中各取一个数相加可以得到N^2个和,求这N^2个和中最小的N个。 输入输出格式 输入格式: 第一行一个正整数N; 第二行N个整数Ai,满足Ai 第三行N个整数Bi, 满足Bi 【数据规模】 对于50%的数据中,满足1 对于100%的数据中,满足1 输出格式: 输出仅一行原创 2017-12-11 23:43:31 · 350 阅读 · 0 评论 -
[luogu]P2085最小函数值-堆排的玄学运用
题目描述 有n个函数,分别为F1,F2,...,Fn。定义Fi(x)=Ai*x^2+Bi*x+Ci (x∈N*)。给定这些Ai、Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个)。 输入输出格式 输入格式: 输入数据:第一行输入两个正整数n和m。以下n行每行三个正整数,其中第i行的三个数分别位Ai、Bi和Ci。Ai 输出格式:原创 2017-12-10 19:51:51 · 354 阅读 · 0 评论 -
模板-树的遍历(先序)
#include using namespace std; const int maxn=100005; struct Tree{ int fa; int l; int r; }tr[maxn]; void dfs(int x); int a,b; int n,m; int EA; int main(){ cin>>n>>m; for(int i=1;i<=m;i++){ cin>原创 2017-12-02 10:17:52 · 277 阅读 · 0 评论 -
模板-堆(根堆相关操作,堆排)
堆排时从小到大是pus_small&del_stob;从大到小是pus_big&del_btos pus函数操作基本原理是把当前点与之上的点比对,有不符合规律的交换; del函数操作基本原理是删去堆顶的点,把最后一个节点放到堆顶进行交换比对操作,若把删去的堆顶存下来的话就是排序 #include using namespace std; const int maxn=100005;原创 2017-12-10 15:54:20 · 283 阅读 · 0 评论 -
二叉查找树&amp;amp;&amp;amp;平衡树基础
操作:二叉查找树(插入,查找,删除,dfs序,求最值,第k大/小) //二叉查找树 //特点:每个点左子树上的点都小于该点,右子树上的点都大于该点 //没有取值相同的点 任意点的左右子树均为二叉查找树 //中序遍历严格单调递增 #include<iostream> #include<cstdio> #include<cstring> #include&...原创 2018-02-10 00:45:20 · 352 阅读 · 0 评论
分享