线段树
文章平均质量分 67
kkkkahlua
这个作者很懒,什么都没留下…
展开
-
线段树 lazy tag 小合集
(这里的基础和进阶纯粹是根据PO主水平说的…大家意思意思看看就好Orz)基础poj 3468hiho 1078poj 2777hdu 4902进阶hdu 3911hdu 3397未完待续基础poj 3468题目链接题意: 两种操作: 1. 对一段区间中的每一个数都加上一个值 2. 询问区间和我学习 lazy tag 的第一道题,可以说是十分经典的模板题了,看了dalao的博客然原创 2017-07-14 17:01:50 · 428 阅读 · 0 评论 -
hdu 1540 Tunnel Warfare 线段树 / set
题目链接题意一排数字1,2,3,...,n1,2,3,...,n,一些操作: D xD\ x:擦除 xx(可重复擦除) Q xQ\ x:询问包括 xx 的最长连续区间 RR:恢复上一个擦除的数字法一:线段树思路维护很常规,维护区间内 左起连续的个数,右起连续的个数,最大连续的长度。 询问时比较独特,需要额外的判断:如果询问的 xx 在当前区间(lsonlson)的右起连续区间内,则要同时询问原创 2017-08-28 15:47:19 · 272 阅读 · 0 评论 -
BZOJ 2212 [Poi2011]Tree Rotations 线段树合并
题目链接题意现在有一棵二叉树,所有非叶子节点都有两个孩子。在每个叶子节点上有一个权值(有 nn 个叶子节点,满足这些权值为 1..n1..n 的一个排列)。可以任意交换每个非叶子节点的左右孩子。 要求进行一系列交换,使得最终所有叶子节点的权值按照遍历序写出来,逆序对个数最少。参考线段树的合并 ——杭州二中 黄嘉泰 【bzoj2212】[Poi2011]Tree Rotations ——原创 2017-09-05 23:16:21 · 322 阅读 · 0 评论 -
BZOJ 4551 树 dfs序+线段树 / 并查集
题目链接题意给定一颗有根树(根为1),有以下两种操作: 1. 标记操作:对某个结点打上标记(在最开始,只有结点1有标记,其他结点均无标记,而且对于某个结点,可以打多次标记); 2. 询问操作:询问某个结点最近的一个打了标记的祖先(这个结点本身也算自己的祖先)。法一:dfs序+线段树分析类似于区间修改,单点查询,因为给某个结点打上标记会对它的整棵子树产生影响。 修改的注意点是只有当前修改的情况优原创 2017-08-27 09:18:10 · 283 阅读 · 0 评论 -
poj 3237 Tree 树链剖分 线段树
题目链接题意给定一棵树,每条边上都有权值。 三种操作: 1. 修改某条边的权值 2. 将某条树链上所有边的权值变为相反数 3. 询问某条树链上的最大边权思路先树链剖分,然后建线段树,维护一段的最大值和最小值(Lazy TagLazy\ Tag 好题)。Code#include <cstdio>#include <cstring>#include <iostream>#include <原创 2017-08-28 10:42:12 · 251 阅读 · 0 评论 -
BZOJ 3211 花神游历各国 线段树 / 树状数组+并查集
题目链接题意两种操作 1. 对一段区间开方 2. 询问区间和思路这道题最关键的地方就是注意到 开方 操作进行几次后数字就变成了 11(或者有的一开始就为 00),之后的操作都是没有意义的了线段树用一个 flagflag 标记这段区间是否全部 ≤1\leq 1,如果是的话就没有必要继续往下修改了。Code#include <bits/stdc++.h>#define maxn 100010#d原创 2017-08-20 16:39:39 · 408 阅读 · 0 评论 -
2017多校四 1004题 hdu 6070 Dirt Ratio 二分 + 线段树 + 分数规划
题目链接题意:给定一个数列 a 长度为 n (n 这道题的特殊之处在于其是special judgeOutputFor each test case, print a single line containing a floating number, denoting the lowest ''Dirt Ratio''. The answer mus原创 2017-08-05 15:00:46 · 468 阅读 · 0 评论 -
hdu 2795 Billboard 转化 线段树 区间最大值
题目链接题意:有一个 h * w 的矩形,要用 1 * w[i] 的小矩形去覆盖它,覆盖的原则是先 topmost,再 leftmost,并且不能覆盖现有的矩形。给出 n 组询问,问当前的小矩形能放在哪一行。还真没看出来是棵线段树...不过一说是线段树,就十分合理了,就是一个询问区间最大值的问题。所以这道题的关键就是:看出来这是个线段树!此外,细原创 2017-08-02 11:50:55 · 260 阅读 · 0 评论 -
hdu 3954 Level up 线段树 升级版Lazy tag 区间整体的性质
题目链接题意:给定一段区间 [1, n],每个点都有自身的 Level 值和 Exp 值;进行若干次操作 W 和 Q,W L R e:给区间 [L, R] 的每个点增加一定的经验 exp = Level * e, 注意到每个点增加的经验值是不同的,与各自的等级成正比Q L R:询问区间 [L, R] 内的最大经验值 maxExp思考过程:因为每个点增加的原创 2017-07-31 22:25:26 · 301 阅读 · 0 评论 -
hdu 3911, 3397 线段树 lazy tag
hdu 3911题意: 0, 1序列 两种操作: 1. 将一段区间内的 0 与 1 翻转 2. 询问一段区间内最长的连续的 1 的个数对于每个区间而言记录如下信息: 左起连续的 1 的个数,右起连续的 1 的个数,整段区间最长的连续的 1 的个数 左起连续的 0 的个数,右起连续的 0 的个数,整段区间最长的连续的 0 的个数 之所以要记原创 2017-07-14 17:13:01 · 215 阅读 · 0 评论 -
POJ 3667 Hotel & HDU 2871 Memory Control 线段树区间合并
POJ 3667参考poj 3667 Hotel ——Titanium题意一条线段长度为 nn,初始未被覆盖。进行 两种操作 mm 次: 1. 询问 最左边的 未被覆盖的 长度 ≥D\ge D 的 区域的左端点,并覆盖这段区域; 2. 清除 [x,x+d−1][x,x+d-1] 区域的覆盖。思路线段树上记录的信息还是老套路,左边连续的最大值,右边连续的最大值,一整段中的最大值;清除操作也原创 2017-08-31 19:29:40 · 260 阅读 · 0 评论