
树结构
文章平均质量分 79
Z_X_B_233
这个作者很懒,什么都没留下…
展开
-
看懂树状数组
恩,今天一下午都花在搞树状数组上面去了吧。现在才认清楚树状数组的一些东西。我们先看树状数组的结构如图他的规律就是c[x]永远有一条线连到a[x],c[x]之前绝对没有连到a[x]的线 c[2^n]=a[1]到a[2^n]的和 c[2k+1]=a[2k+1]原创 2017-02-10 20:51:52 · 370 阅读 · 0 评论 -
poj1151(线段树+扫描线)
题目就是矩阵面积并这里我就不多说了这道题的精髓在于运用线段树来求边长,扫描线的思想反而没有线段树重要直接上代码+注释#include #include #include #include #define maxn 1000using namespace std;class node//线段树的结构我们是用一条平行于y轴的线去扫描的{ //也就是说我们这个线原创 2017-05-06 15:48:29 · 285 阅读 · 0 评论 -
堆结构
堆这种数据结构呢,就是一种能保证堆顶元素是最大元素,或最小元素的一种数据结构,维护时间为log2 N下面介绍我们就拿最大堆来说,不失一般性首先说堆的结构:堆的结构就一个要求,根节点大于他的两个子节点首先说元素的删除,我们只能删除堆顶元素我们删除堆顶元素后将堆尾元素heap【top】与堆顶元素heap【1】交换 此时堆的长度top=top-1;原创 2017-02-16 16:32:51 · 645 阅读 · 0 评论 -
哈弗曼树
哈弗曼树是能保证权值*路径的和最小的数据结构哈弗曼树的构造是建立在小根堆以上的首先先建立一个小根堆每次取出小根堆的两个顶端元素再把两个元素相加放入小根堆中直到只剩一个元素ans就是最小权值之和 long long ans=0; while (len>1) { long long a,b; a=p[1];原创 2017-02-19 15:48:19 · 340 阅读 · 0 评论 -
HZAU校赛PJ补题(二维并查集)
这道题在现场做的时候莫名其妙的wa了,后来李维宇解释说因为题目数据的问题必须用%s题解用的是DFS但是我个人并不喜欢DFS感觉太暴力了没有算法的美感。这道题我是用二维并查集做的算是写一个二维并查集的模板吧题目传送门:http://acm.hzau.edu.cn/problem.php?id=1208int find_r(int x,int y){ int sum=y*60+x原创 2017-04-30 14:50:47 · 388 阅读 · 0 评论 -
并查集算法回顾
并查集就是有关集合的合并和查找算法对于每个集合来说我们都有一个标志这个集合中的所有元素都指向这个标志我们可以定义a的标志为Set【a】我们就可以利用这些标志来进行集合的合并和查找在最开始的时候要memset(Set,-1,sizeof(Set));至于为什么后面可以自己体会现在介绍两个函数int find_r(int p){ if (Set[p原创 2017-03-07 19:46:16 · 431 阅读 · 0 评论 -
HDU6203 补题LCA复习+dfs序
这个题目其实算是贪心吧,感觉自己贪心有点菜,这几天要把贪心练一下了建树,dfs什么的就不说了,这里主要讲下思路就是建完树后,给你两个点然后求出他们的lca,将这两个点u,v和lca,dlca(lca点的深度)存在一个结构体数组中然后将这个数组按深度从大到小排序接着遍历这个数组每次看u,v有没有访问过,如果有就不管,如果没有,就将他们的lca点拿掉并将lca点的所有子节点记为原创 2017-09-14 20:33:31 · 488 阅读 · 0 评论