数据结构
cysjiang
这个作者很懒,什么都没留下…
展开
-
POJ 3250 Bad Hair Day(单调栈)
【题意】:给你N((1 ≤ N ≤ 80,000))只牛的高度,每只牛都是向右看,它能看到那些严格低于它的牛的头顶,问所有牛能看到的其他牛的和是多少。 例如 10 3 7 4 12 2这六只牛,第一只能看到 3 7 4这三只牛的头顶,7 能看到 4,12 能看到 2,一共是5; 我们可以找一下,对于第i只牛,有多少牛能看到它。 确定这样的思路,可以读入一只牛的高度,就访问它前面的牛,看看是不是原创 2016-10-13 15:21:39 · 221 阅读 · 0 评论 -
HDU 3282 Running Median(非正统解法——二叉搜索树)
【题意】第一行两个数,分别是集合的编号和集合的元素个数。第二行,n个数,表示一个集合,让你按顺序读入这些数,每读入奇数个,便询问已读入的这奇数个数的中位数是几。 【分析】首先说,这个题的数据比较水,不然按我的方法肯定过不了。据学长说是线段树,但是依然有同学凭借强悍的n^2 * log(n) 的暴力水过,那看起来我还是可以过的,于是就用二叉树尝试了一下。 二叉排序树,就是一种特殊的二叉树,左子树上原创 2016-12-16 17:09:25 · 456 阅读 · 0 评论 -
HDU - 4547 倍增法求最近公共祖先(LCA)
倍增法求LCA的一般步骤: 1.建树,确定深度和父子关系。 2求出递推数组;即:f[i][j] 表示 i 节点的第 2 ^ j 倍祖先,可知 f[i][j] = f[f[i][j - 1]][j - 1]; 3.对于读入的每对查询进行操作: .调平,即将两个点调整到同一深度,也就是让深度较大的点跳到和另一个点同一深度的祖先。 .j 从零开始 只要 两个点的2 ^ j 祖先不相等,j原创 2017-07-18 10:12:32 · 429 阅读 · 0 评论 -
qduoj 树结构重逢 (两遍深搜)
描述 给定一颗包含n个节点的无根树,并且把节点从1-n编号。现在让你求对于每个点,求出所有点到这个点的距离的和(距离当然是最短距离了..)。输入 第一行包含一个正整数n ( n <= 100000 ),表示节点的个数。 后面(n - 1)行,每行两个整数(u, v)表示树的边u-v。输出 每行一个整数,第i(i = 1,2,…n)行表示所有节点到第i个点的距离之和。(i到i节点的距离为0)样原创 2017-07-26 16:46:28 · 440 阅读 · 0 评论 -
HDU 5877 Weak Pair
题意:问一棵树中有多少序数对 < u , v >满足,u是v的祖先节点,并且这两个节点的值相乘小于或等于k。 分析:感觉这个思路还是很妙的。考虑深搜的过程,当搜到一个节点的时候,所有经过的点都是它的祖先节点。所以就可以每搜到一个点就计算经过的点中有多少个点满足和它相乘<=k。这一步可以用树状数组来计算。然后再把这个点加入树状数组。#include<cstdio> #include<algorit原创 2017-08-27 15:15:48 · 291 阅读 · 0 评论