
线段树
文章平均质量分 62
鶸鶸
这个作者很懒,什么都没留下…
展开
-
hdu 4027 Can you answer these queries? (线段树)
上题:A lot of battleships of evil are arranged in a line before the battle. Our commander decides to use our secret weapon to eliminate the battleships. Each of the battleships can be marked a val原创 2017-05-13 20:31:46 · 236 阅读 · 0 评论 -
POJ 2886 Who Gets the Most Candies?
题意 给你一个n和一个k,表示有n个人,从k先开始,被叫到的人出圈,之后出圈的那个人,手里有一个数字a[i],如果是正数就表示的是顺时针走a[i]步是下一个出圈的人,如果是负数就逆时针走a[i]步是下一个出圈的人,每个人出圈都会得到一定的糖果,糖果的数量是假如你是第k次出圈的,那么你将会得到k的因子个数的糖果,现在问你谁得到了最多的糖果。 思路 我们可以轻易的求出第几次出来会得到最多的糖果,...原创 2018-07-19 10:11:32 · 126 阅读 · 0 评论 -
HDU 2795 Billboard(线段树)
题意 给你一个H*W的矩阵,之后有n张海报,他们的规格是1*a[i],每次都贴到矩阵的左上方,不行的话就贴下一行,现在问你贴一张海报,他会贴在第几行。 思路 我们把每一行的宽当作线段树的一个节点,由于n有2525{2^5},但是H有1919{1^9},但是你H有那么大,你也仅仅只能填n行而已,所以我们建一棵min(n,H)的线段树,之后我们线段树维护的是你所管辖的区间的最大值,之后我们去查询...原创 2018-07-19 21:01:34 · 206 阅读 · 0 评论 -
HDU 6315 Naive Operations 线段树好题
题意 给你一个a数组和一个b数组,a数组初始为0,有两个操作: 1.对区间L,R 的a数组全部+1 2. 算出区间(L,R) a[i]/b[i] (下界) 的值。 思路 由下界可以看出,只有当a数组加到大于b数字的整数倍他才会有值(比如a是4,b是5,那么a/b的值是0,只有a等于5的时候他才是1),那么我们就维护a加了几次就行了,又由于a每次都加1,且和b相等的...原创 2018-07-26 09:52:26 · 376 阅读 · 0 评论 -
ACM-ICPC 2018 南京赛区网络预赛 G Lpl and Energy-saving Lamps(线段树)
题意 这道题真的纯属尼玛题意题。。。赛后仔细翻译了翻译就是一道裸的线段树,给你n个房间,每个房间有一些灯泡需要换,你每个月可以买m个灯泡,当你当前房间需要的灯泡数小于等于你手中有的灯泡数的时候,你才可以换他,否则就跳到下一个房间,如果你手中的灯泡都换不了任意房间的时候就把灯泡留在手里等下一个月,现在给你一些查询,问你第j个月已经换完了几个房间,且当前月份手里有几个灯泡。 思路 就是你维护区间...原创 2018-09-02 23:27:50 · 166 阅读 · 0 评论 -
HDU - 4521 小明系列问题——小明序列 (dp + 线段树)
题意 还是LIS,不过有一个限制条件是选择的节点必须相差d。 思路 dp方程其实还是 dp[i] = max(dp[j]) + 1 (0 < j < i && a[i] > a[j])只不过是j和i又加了一j+d > i 而已,那么具体怎么写?很简单我们用线段树去维护max(dp[j]),具体怎么维护?我们把所有的点离散,之后以离散过后的点建立线段树,...原创 2018-09-02 23:40:42 · 354 阅读 · 0 评论 -
CodeForces 138C Mushroom Gnomes - 2 (线段树)
题意 给你n个蘑菇和m颗大树的位置,以及大树往左倒往右倒的概率,大树的高度,和蘑菇的权值,蘑菇被压倒必死,问你蘑菇最大的期望是多少? 思路 对于一颗树而言,他往左倒的概率是a那么不往左倒的概率就是1-a,那么我们线段树维护一下某个区间不被压倒(树不会倒)的概率就好了,具体怎么维护,我们还是把所有点离散存下来,之后以离散后的点为区间建立线段树节点原来都是1,之后更新每个区间不被压倒的概率就好了...原创 2018-09-02 23:48:07 · 263 阅读 · 0 评论 -
ACM-ICPC 2018 徐州赛区网络预赛 G. Trace (线段树维护)
题意 你在海滩上有浪花,所有的浪花都是矩形的,当一个浪花来了之后,就会覆盖他的前一个浪花,问你最后浪花的周长和 思路 我们从后往前来,这样的话,我们处理的都是会留下来的,怎样的会留下来呢? 首先我们先看1号点和2号点,由图我们可以很明显的看出1号点会被淹没,而1`和1“他们不会被淹没,所以对于我们当前的值来说,我们维护一下大于他的x的最大的y,和大于他的y坐标的最大的x,这两个值,然后每次...原创 2018-09-13 21:02:26 · 296 阅读 · 0 评论 -
ACM-ICPC 2018 徐州赛区网络预赛 H. Ryuji doesn't want to study (线段树维护前缀和的前缀和)
题意 很简答就是每次查询 (L,R)的时候 ,查询 a[L]∗(R−L+1)+a[L+1]∗(R−L−1)+a[L+2]∗(R−L−2)....a[R]∗1a[L]∗(R−L+1)+a[L+1]∗(R−L−1)+a[L+2]∗(R−L−2)....a[R]∗1a[L] * (R-L+1) + a[L+1] *(R-L-1) + a[L+2] * (R-L-2)....a[R]*1,还有修改值 ...原创 2018-09-13 21:20:59 · 206 阅读 · 0 评论 -
CodeForces - 276E Little Girl and Problem on Trees(线段树)
题意现在给你一棵这样的树,除了根节点外,其他的所有节点度都为2,也就是说除了根节点之外其他的节点都只能有一个节点,现在有两种操作:1。以当前节点为中心,距离为d的范围内的点全部都加上x。2。查询某个点的值思路*观察这样一张图,你会发现他们其实都是一条一条的链状的,所以对于更新来说我们可以这样,我们建两颗线段树,第一颗线段树中我们就是维护每个链上的值,每次更新的时候我们就以节点V为中心,...原创 2018-09-25 12:35:43 · 230 阅读 · 0 评论 -
ACM-ICPC 2018 沈阳赛区网络预赛 J. Ka Chang (分块+树状数组+dfs序)
题意 给你一颗树,由两种操作: 1.把这棵树深度为DDD的点全部都加上一个值。 2.求以p为根节点的子树的权值和是多少? *思路 对于树上的东西,我们可以把他求一下DFS序,之后就可以把树上的结构变成线性的结构,之后就是查询和修改这两个东西了。 关于修改:对于修改来说,当前层的点少的时候我们直接树状数组暴力修改,对于当前层数的点太多的情况来说,我们把层数打上标记。 对于查询,我们先查...原创 2018-09-14 19:03:56 · 192 阅读 · 0 评论 -
HDU 5592 ZYB's Premutation (线段树求逆序对)
题意 给你一组从1到n的排列,表示的是你当前所拥有的逆序对数,现在让你重新还原这个排列。 思路 我们知道[1⋅⋅⋅i][1···i][ 1···i ]区间和[1⋅⋅⋅⋅i−1][1····i−1][1····i-1]区间的逆序对数了,那我们其实就可以确定第i个位置的大小是多少了,因为他们的差(设为p)其实就表明当前位置iii的这个数在他的前面有p个比他大,那么换句话说他其实就是他在当前区间是...原创 2018-09-15 10:39:18 · 192 阅读 · 0 评论 -
CodeForces - 35E Parade (线段树)
题意:给你几个矩形,现在问你矩形轮廓线改变的坐标在哪里思路:怎样的轮廓线会改变?其实就是当他们的高度改变的时候轮廓线会改变,那么我们离散x坐标,之后维护y的最大值,当y改变的时候我们就记录下当前的横坐标,而纵坐标刚好就是他的高度,其中有一个问题就是 当我们改[1,2]值为1区间和[3,4]值为2区间后 ,我们发现当我们查2的时候他的值是1,而查3的时候他的值是2,但是根据图中画的我们发...翻译 2018-09-25 22:05:55 · 288 阅读 · 0 评论 -
HDU 4288 Coder (线段树)
题意 给你n个操作,分为三种分别是 : add a , del a ,sum,表示的是你可以在添加一个数,删除一个数,求下标 i % 5 == 3 的所有和是多少,注意当你删除一个点的时候,他后面的点的下标都会改变。 思路 由样例可以看出来需要用线段树,具体怎么用?由于线段树没有删除和增加的操作,所以我么把删除和增加离线下来,然后离散一下,把每次操作对应成线段树上的节点,那么每次删除和增加操...原创 2018-07-18 11:33:10 · 147 阅读 · 0 评论 -
CF 19D - Points (线段树+set)
题意 给你一个2维坐标系,之后给你n(2e5)次操作,有加点操作,删点操作,和查询操作,加和删就是在二维坐标系里加一个点和删一个点,其中查询点是给你一个(x,y)让你找到一个(x1,y1),(x1>x,y1>y)如果有找到最小的x1,如果x1相同找到最小的y1。 思路 首先n有2e5,我们首先离线我们的所有操作,去重后建一棵长度为n的线段树(第一大到第n大),之后我们的线段树维护...原创 2018-07-16 18:01:32 · 343 阅读 · 0 评论 -
POJ - 3368 Frequent values (RMQ)
题意:给你n个数,和m个询问(l,r),问你从l到r众数的个数。思路:RMQ,我们首先预处理出所有区间的众数数量,比如样例-1 -1 1 1 1 1 3 10 10 10那么我们预处理的结果就是 1,2,1,2,3,4,1,1,2,3,之后对于我们要查询的区间我们可以分成两个部分,就是在一个完整的众数区间和不在一个完整的众数区间比如说我们查询 的是 4到9,那么我们可以知道从第7位开始时一个完整的...原创 2018-04-13 17:06:50 · 163 阅读 · 0 评论 -
hdu 敌兵布阵 (线段树)
上题:C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视。 中央情报局要研究敌人原创 2017-05-08 23:28:40 · 228 阅读 · 0 评论 -
hdu I Hate It (线段树裸题)
上题:很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。 这让很多学生很反感。 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。Input本题目包含多组测试,请处理到文件结束。 在每个测试的第一行,有两个正整数 N 和 M ( 0学生ID编号分别从1编到原创 2017-05-08 23:32:45 · 243 阅读 · 0 评论 -
Just a Hook (线段树+lazy标记)
上题:In the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of the heroes. The hook is made up of several consecutive metallic sticks which are of the same length.原创 2017-05-08 23:37:20 · 230 阅读 · 0 评论 -
A Simple Problem with Integers (线段树 +lazy标记)
上题:You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. One type of operation is to add some given number to each number in a given interval. The other is to原创 2017-05-08 23:48:31 · 192 阅读 · 0 评论 -
Count the Colors (线段树,暴力)
上题:Painting some colored segments on a line, some previously painted segments may be covered by some the subsequent ones.Your task is counting the segments of different colors you can see at las原创 2017-05-09 15:00:26 · 694 阅读 · 0 评论 -
HDU - 1541 树状数组
题意:对于一个星星他有阶数,阶数的大小是按照他左下角有多少颗星星所决定的,现在问你从0~n-1阶的星星各有多少颗思路:有一个细节问题,就是当x不相同的时候,y以升序输入,当y相同时,我们以x的升序输入,也就是说,当我们输入到当前数的时候,他的左下角的大小其实已经知道了就是以他的0~x区间的数值。#include#includeint c[150010];int ans[150原创 2017-07-21 16:30:29 · 227 阅读 · 0 评论 -
POJ - 3667 线段树区间合并
题:点击打开链接题意:就是问1.你有没有一段长为m的连续区间,如果有的话就输出区间的最小的左端点,2把区间a~a+b的值制空。思路:就是区间合并的裸题,我们需要存的是 区间左端点向右最多能延伸的区间长度,和区间右端点向左能够移动的区间长度,和区间最长连续的长度,之后我们每次查询,如果左子树长度比我们想要的长度长,那么久继续查询左子树,如果比他小,那我们就查询,左子树右端点可以延伸的长度原创 2017-11-17 17:21:13 · 200 阅读 · 0 评论 -
Assign the task HDU - 3974 (dfs + 线段树)
题意:题意就是给你一颗树,然后如果你给一节点上赋值,那么他下面的所以子节点都会被赋上这个值,现在有两个操作:1 查询某个节点上的值,2.修改某个节点上的值 (注意他下面的值也会改变)点击打开链接思路:就是,我们在树上跑一边dfs然后给这颗树上的每个节点都重新编号,得到一个high数组和一个low数组,其实high数组表示的是区间左端点,low数组表示的区间右端点之后就是对区间进原创 2017-11-18 10:04:15 · 191 阅读 · 0 评论 -
hdu 3265 Posters(线段树,扫描线)
题意:给你n张矩形海报,之后每张矩形之中又挖去一个小矩形,问你n个复合矩形的面积并思路:我们把那个挖空的小矩形变换一下,变成4个矩形就是这样,之后就变成了4个小矩形之后求一下面积并就好了上代码吧:#include <stdio.h>#include <string.h>#include <algorithm>#include <iostream>...原创 2018-03-22 20:05:58 · 211 阅读 · 0 评论 -
计蒜客 A组模拟赛 青出于蓝胜于蓝(dfs序,树状数组)
题意:中文武当派一共有 n 人,门派内 n 人按照武功高低进行排名,武功最高的人排名第 1,次高的人排名第 2,... 武功最低的人排名第 n。现在我们用武功的排名来给每个人标号,除了祖师爷,每个人都有一个师父,每个人可能有多个徒弟。我们知道,武当派人才辈出,连祖师爷的武功都只能排行到 p。也就是说徒弟的武功是可能超过师父的,所谓的青出于蓝胜于蓝。请你帮忙计算每个人的所有子弟(包括徒弟的徒弟,徒弟...原创 2018-03-30 15:25:33 · 242 阅读 · 0 评论 -
poj 1151 Atlantis (线段树扫描线)
题意:给你n个矩形的左下角和右上角的坐标,现在问你这个复合矩形的总面积思路:这就是线段树扫描线的裸题,扫描线就是在你的复合矩形上面加上一条虚拟的线,其中有两种一种是从左往右的扫描线,一种是从下到上的,这里我写的是从下到上的扫描线,先上图把<来源见水印>我们现在来讲一下,首先我们将横坐标离散,之后将离散后的坐标映射到线段树上,之后按照矩形和纵坐标从小到大排序(保证他是从最下往最上扫)当我...原创 2018-03-22 09:46:06 · 217 阅读 · 0 评论 -
hdu 1255 覆盖的面积 (线段树 扫描线)
题意: 给你n个矩形的左上角坐标和右下角坐标问你复合矩形中覆盖过至少两次的区域的面积.思路:还是扫描线,不过线段树中多存了一个变量,ss表示的是覆盖过至少两次的面积,他是怎么算出来的呢?首先我们的线段树里有一个cnt变量如果他不等于0就表示他的区间被完全覆盖,那么当他的cnt>1就表示他被完全覆盖了至少两次以上那么我们就可以合并ss的长度,如果等于1呢?就表示他的整个区间被覆盖了一次,那么我...原创 2018-03-22 11:34:22 · 177 阅读 · 0 评论 -
牛客练习赛34 C little w and Segment Coverage(差分或者线段树)
题意:思路:首先,我们可以简单的得到,那些重复覆盖的点我们肯定是不能选的,我们要选的肯定是那些只被覆盖过一次的点,那么现在的问题就到了我们如何快速的找到那些只被覆盖过一次的点?思路1: 我们根据区间信息建一棵线段树,之后查询他的叶子节点的权值是不是1,复杂度是o(logn)。思路2:根据差分数组,利用差分数组我们可以直接O(n)的知道叶子节点的权值。之后我们要开始枚举这些只...原创 2018-12-18 21:58:58 · 348 阅读 · 0 评论