线段树
brucehb
这个作者很懒,什么都没留下…
展开
-
51nod - 1287 加农炮
一个长度为M的正整数数组A,表示从左向右的地形高度。测试一种加农炮,炮弹平行于地面从左向右飞行,高度为H,如果某处地形的高度大于等于炮弹飞行的高度H(A[i] >= H),炮弹会被挡住并落在i - 1处,则A[i - 1] + 1。如果H <= A[0],则这个炮弹无效,如果H > 所有的A[i],这个炮弹也无效。现在给定N个整数的数组B代表炮弹高度,计算出最后地形的样子。 例...原创 2018-01-28 00:29:09 · 213 阅读 · 0 评论 -
区间染色
给定一个长度为n(n <= 100000)的木板,支持两种操作: 1、P a b c 将[a, b]区间段染色成c; 2、Q a b 询问[a, b]区间内有多少种颜色; 保证染色的颜色数少于30种。 思路: 因为颜色种类少于30,因此可以用int型整数来表示所有颜色,每一个比特代表一种颜色,颜色从0开始。 #include <iostr...原创 2020-11-25 00:43:51 · 1322 阅读 · 4 评论 -
HDU - 1255 覆盖的面积
Problem Description 给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积. Input 输入数据的第一行是一个正整数T(1<=T<=100),代表测试数据的数量.每个测试数据的第一行是一个正整数N(1<=N<=1000),代表矩形的数量,然后是N行数据,每一行包含四个浮点数,代表平面上的一个矩形的左上角坐标和右下角坐标,矩形的...原创 2019-02-21 21:41:30 · 241 阅读 · 0 评论 -
poj - 1177 Picture
Description A number of rectangular posters, photographs and other pictures of the same shape are pasted on a wall. Their sides are all vertical or horizontal. Each rectangle can be partially or tota...原创 2019-02-15 01:21:01 · 241 阅读 · 0 评论 -
51nod - 1494 选举拉票
现在你要竞选一个县的县长。你去对每一个选民进行了调查。你已经知道每一个人要选的人是谁,以及要花多少钱才能让这个人选你。现在你想要花最少的钱使得你当上县长。你当选的条件是你的票数比任何一个其它候选人的多(严格的多,不能和他们中最多的相等)。请计算一下最少要花多少钱。 Input 单组测试数据。 第一行有一个整数n(1≤n≤10^5),表示这个县的选民数目。 接下来有n行,每一行有...原创 2018-06-20 00:49:56 · 526 阅读 · 0 评论 -
树上的最远点对
n个点被n-1条边连接成了一颗树,给出a~b和c~d两个区间,表示点的标号请你求出两个区间内各选一点之间的最大距离,即你需要求出max{dis(i,j) |a<=i<=b,c<=j<=d}(PS 建议使用读入优化)Input第一行一个数字 n n<=100000。 第二行到第n行每行三个数字描述路的情况, x,y,z (1<=x,y<=n,1<=z&...原创 2018-07-01 18:04:14 · 326 阅读 · 0 评论 -
线段树的修改
对于一棵 最大线段树, 每个节点包含一个额外的 max 属性,用于存储该节点所代表区间的最大值。 设计一个 modify 的方法,接受三个参数 root、 index 和value。该方法将 root 为跟的线段树中 [start, end] = [index, index] 的节点修改为了新的 value ,并确保在修改后,线段树的每个节点的 max 属性仍然具有正确的值。原创 2015-11-01 02:00:44 · 590 阅读 · 0 评论 -
线段树的构造
线段树是一棵二叉树,他的每个节点包含了两个额外的属性start和end用于表示该节点所代表的区间。start和end都是整数,并按照如下的方式赋值: 根节点的 start 和 end 由 build 方法所给出。对于节点 A 的左儿子,有 start=A.left, end=(A.left + A.right) / 2。对于节点 A 的右儿子,有 start=(A.left + A.righ原创 2015-10-28 23:09:31 · 379 阅读 · 0 评论 -
线段树查询 II
对于一个数组,我们可以对其建立一棵 线段树, 每个结点存储一个额外的值 count 来代表这个结点所指代的数组区间内的元素个数. (数组中并不一定每个位置上都有元素) 实现一个 query 的方法,该方法接受三个参数 root, start 和 end, 分别代表线段树的根节点和需要查询的区间,找到数组中在区间[start, end]内的元素个数。 样例 对于数组 [0, 空,2原创 2015-10-29 00:57:31 · 529 阅读 · 0 评论 -
线段树的查询
对于一个有n个数的整数数组,在对应的线段树中, 根节点所代表的区间为0-n-1, 每个节点有一个额外的属性max,值为该节点所代表的数组区间start到end内的最大值。 为SegmentTree设计一个 query 的方法,接受3个参数root, start和end,线段树root所代表的数组中子区间[start, end]内的最大值。 样例 对于数组 [1, 4, 2,原创 2015-10-28 23:40:07 · 416 阅读 · 0 评论 -
51nod - 1199 Money out of Thin Air
一棵有N个节点的树,每个节点对应1个编号及1个权值,有2种不同的操作。 操作1:S x y z,表示如果编号为x的节点的权值 < y,则将节点x的权值加上z。(Single) 操作2:A x y z,表示如果编号为x的节点以及其所有子节点的权值平均值 < y,则将节点x及其所有子节点的权值加上z。(All) 给出树节点之间的关系,进行M次操作,问所有操作完成后,各个节点的权值为多...原创 2018-05-15 21:35:20 · 189 阅读 · 0 评论 -
HDU - 1542 Atlantis
Problem Description There are several ancient Greek texts that contain descriptions of the fabled island Atlantis. Some of these texts even include maps of parts of the island. But unfortunately, the...原创 2019-02-20 23:10:22 · 190 阅读 · 0 评论