![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树
文章平均质量分 80
Jason_Wcz
这个作者很懒,什么都没留下…
展开
-
HDU 1166 敌兵布阵 (线段树基础&树状数组基础)
题目链接 线段树和树状数组,都是用来维护区间信息的,并且都有较高的效率来查询(都是logn级,但树状数组在效率上还是略快于线段树)或者修改信息。 线段树在建树的时候,要开4倍的空间。 树状数组只需要另开一个维护数组。 线段树的代码更繁琐,但它可以区间更新,而树状数组只能单点更新。 因此,当题目不需要区间更新的时候,树状数组优先,反之则只能用线段树。 通过HDU 1166这题可以体会...原创 2017-12-18 14:44:12 · 167 阅读 · 0 评论 -
HDU 3974 Assign the task (并查集 || 线段树)
题目链接虽然挂在线段树的题集里,但是能一眼看出也是并查集的题。本来准备就用线段树做,可是,想了半天不知道怎么建树。。。就先用并查集过吧。等忙完期末项目,回来再看看怎么用线段树做。并查集代码:import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java....原创 2017-12-19 14:04:29 · 131 阅读 · 0 评论 -
HDU 1698 Just a Hook (线段树区间更新)
题目链接 不断的区间更新,最后计算整个区间的最终和。 Java依然要用BufferedReader来输入,否则超时。以后记得这种输入数据量大概在几十万的题,直接用BufferedReader吧。 这题,由于是直接更新掉某个区间的值,而不是在某个区间加上某个值,因此在更新sum和mark两个数组值的时候注意下就行了。 import java.io.BufferedReader; import原创 2017-12-19 14:08:15 · 130 阅读 · 0 评论 -
POJ 2182 Lost Cows (线段树)
题目链接 这题需要逆向思维一下吧,两个地方注意下就行了。一个就是从后往前推,先把最后位置的确认了是第几个,再确认倒数第二个。 另一个就是想到怎样用线段树,一开始我想大概也跟前几篇博客那种按先后次序添加进来,但想了想,这题应该是按我们确认位置的次序,把已经确认的给踢出去,所以用线段树来维护L到R区间,依然未被确认位置的个数,在初始化的时候,由于肯定是全都未确认,所以可以用(r - l +1)来表原创 2018-01-24 20:12:30 · 151 阅读 · 0 评论 -
HDU 5700 区间交 (线段树)
题目链接 题意:n个非负整数,给出m个区间,求k个区间相交的区间和的最大值。 思路:按左(右)端点从小到大排序,本文排序左端点。由于我们要求k个区间相交的那个区间的和,所以我们可以让这个相交区间某个端点是固定不变的,比如左端点,然后我们只要求出一个右端点,这个右端点一定要在当前固定左端点的右边才能符合,而且要尽量离得远,当然首先他必须是这k个区间中的一个区间的右端点。(有点混乱,但可能画图比较原创 2018-01-25 17:22:03 · 231 阅读 · 0 评论 -
POJ 3467 A Simple Problem with Integers (线段树区间更新)
题目链接区间更新模板:import java.util.*; public class Main { static Scanner sc = new Scanner(System.in); static int n, q; static long [] sum; static long [] mark; static void pushdown(int rt, int l, int r)...原创 2018-05-23 19:50:07 · 117 阅读 · 0 评论