线段树
Marcus-Bao
这个作者很懒,什么都没留下…
展开
-
HDU - 1166 A - 敌兵布阵 线段树单点更新模板
C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视。 中央情报局要研究敌人究竟演习什么战术,原创 2016-12-11 15:10:34 · 397 阅读 · 0 评论 -
玲珑杯 1164 - 战舰萝莉 线段树水题
点击打开链接DESCRIPTION在大战之后,法力浮·鳝AK迅速驾船驶向北海。当然他知道水之灵不可能那么容易得到,正如爱迪生曾说过:“要把BOSS打倒就要准备足够的等级。”所以鳝氪金招募了一队海盗以防战斗。果不其然,正当鳝看见了水之灵的所在时,一大队舰娘(雾),一大队舰船突然闪现,大战一触即发。大战前,鳝被对面的boss——北方栖姬吸引了,北方栖姬是一个可爱原创 2017-09-26 00:50:57 · 451 阅读 · 0 评论 -
计蒜客 The Heaviest Non-decreasing Subsequence Problem dp LIS变形 || 线段树+dp
题目链接题意:每个数有一个val和weight,如果val = 1e4 weight 为5 ,其余为1.让你求一哥序列使得为weight最大并且val是不下降的.思路:我们知道在求普通的LIS的时候存的东西可能会被交换,换的时候会使得weight并不一定是最优解、当时看大家过的那么多就写了一个坑爹的做法,把所有数离散一下用线段树维护了1 - id[i] 的最大值原创 2017-09-24 19:03:36 · 479 阅读 · 0 评论 -
Codeforces Round #426 (Div. 2) The Bakery 线段树+dp
题目链接题意:把n个数分成k段,每段的价值为这一段数里不同数字的个数,问价值和最大为多少。思路:dp[i][j] 表示把前j个数分为i段的最大价值为多少,那么有如下转移方程:dp[i][j]=max(dp[i-1][k]+w[k+1][j]) (0这个过程需要用线段树来维护一下,记录每一个a[i]的上一次出现的为止pre[i],那么我们每原创 2017-07-31 20:40:35 · 354 阅读 · 0 评论 -
2017 Multi-University Training Contest - Team 2 待补
题目链接Maximum Sequence题意:有2个数组,一个是a,一个是b,长度都为n。现在要把a数组的长度变成2n,有一个往a数组中加元素的规则,对于每一个加入i 位置的元素x,必须满足x<=max{a[j] - j│b[k] ≤ j 思路:很显然,当b[k]越小时我们越应该先用,这样保证找到的an+1数最大,从而an+1 -(n原创 2017-07-28 13:41:59 · 302 阅读 · 0 评论 -
csu 1949 小明的烦恼 并查集+权值线段树
题目链接思路:首先,对于每个员工之间的合并,可以采用线段树来解决这件事.那么主要的问题就是如何求这个集合中第k大的数.这里采用权值线段树来合并,大体的权值线段树,就是我们当时用来求逆序数的用法。题目中是2e5的数据范围,那么我们初始对每个员工建立一个树,然后记录下他的根节点和他的左右子节点,合并时,将两个团队所在树的根节点的合并就好,#include#define原创 2017-06-14 14:17:16 · 560 阅读 · 0 评论 -
微软大楼设计方案 bfs和线段树
题目链接思路:我一直有个问题不明白,我中等的用线段树水过了为什么我把中等的交到简单就wa了?对于简单的我们就可以把整个大楼想象成一个图,有楼的地方全部设置为1表示可走,没有的设置为0表示不可走,对于这个50*50的图枚举两个点跑bfs求最短距离即可.#includetypedef long long ll;using namespace std;const int maxn原创 2017-06-04 23:23:31 · 511 阅读 · 0 评论 -
sdutoj 皮卡丘的梦想2 状态压缩+线段树
题目链接思路:我开了60个树状数组水过去了....但是数据在大点就不行了 正解应该是线段树+状态压缩吧,将60个宝石每一种压缩成一个二进制位. 这样向上回溯的时候记录两个子树或就行了.#includeusing namespace std;#define lson l,m,node<<1#define rson m+1,r,node<<1|1const原创 2017-06-04 21:08:03 · 348 阅读 · 0 评论 -
Count the Colors ZOJ - 1610 线段树区间覆盖
点击打开链接题意:在一条长度为8000的线段上染色,每次把区间[a,b]染成c颜色。显然,后面染上去的颜色会覆盖掉之前的颜色。求染完之后,每个颜色在线段上有多少个间断的区间。注意: 是在区间上有n段被染色,不是区间右端点为n思路:这个题和贴海报的题差不多,都是区间覆盖问题,我们知道涉及到区间覆盖问题 ,那么就是连续型的线段树,我们又两种处理方法,一种原创 2017-03-16 21:32:28 · 523 阅读 · 0 评论 -
Lost Cows POJ - 2182 二分+树状数组/线段树/暴力
点击打开链接大牛博客 这个题我是参考了我斌巨的博客,写的很不错!题意: 给出n和每个数之前比它小的数有几个 需要输出原序列思路:首先,我们需要明确,给定一个逆序数的话我们最后一个数总是可以确定出来的,他就是这个序列中第a[i]+1大的数那么我们确定这个数后把这个数删除,那么倒数第二个数就是剩下的是中第x+1大的数.1.二分+树状数组初始化 每个位置的下标代表牛,都设转载 2017-03-16 21:31:57 · 451 阅读 · 0 评论 -
Can you answer these queries? HDU - 4027 线段树单点更新
点击打开链接题意:给定100000个数,两种操作,0 i j表示将i j这段的数字都开根号(向下取整),1 i j表示查询i j之间的所有值的和。。。(所有的和都不超过64位)..思路: 这是一个线段树单点更新的题...因为都开平方根啊,,,区间没法更新了吧...但是这个题有一个优化,就是当a[i]的值小于等于1时就不需要下次再开方了,直接标记他,也是懒人标记的用法,然后往上回原创 2017-03-16 21:09:28 · 510 阅读 · 0 评论 -
hihcoder #1079 离散化 线段树+区间离散化
时间限制:10000ms单点时限:1000ms内存限制:256MB描述小Hi和小Ho在回国之后,重新过起了朝7晚5的学生生活,当然了,他们还是在一直学习着各种算法~这天小Hi和小Ho所在的学校举办社团文化节,各大社团都在宣传栏上贴起了海报,但是贴来贴去,有些海报就会被其他社团的海报所遮挡住。看到这个场景,小Hi便产生了这样的一个疑问——最后到底能有几张海原创 2017-01-24 19:46:49 · 1014 阅读 · 0 评论 -
hdu 1698 C - Just a Hook 线段树
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. No原创 2017-01-23 19:05:06 · 464 阅读 · 0 评论 -
算法训练 操作格子 线段树
问题描述有n个格子,从左到右放成一排,编号为1-n。共有m次操作,有3种操作类型:1.修改一个格子的权值,2.求连续一段格子权值和,3.求连续一段格子的最大值。对于每个2、3操作输出你所求出的结果。输入格式第一行2个整数n,m。接下来一行n个整数表示n个格子的初始权值。接下来m行,每行3个整数p,x,y,p原创 2017-02-08 16:45:18 · 717 阅读 · 0 评论 -
POJ - 3468 B - A Simple Problem with Integers 线段树区间更新模板
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 ask for th原创 2016-12-11 15:16:15 · 449 阅读 · 0 评论 -
Codeforces Round #442 (Div. 2) Danil and a Part-time Job dfs序+线段树区间反转
点击打开链接思路:由于每个位置要么0要么1,所以这个我们可以用线段树来维护区间和,反转的时候就是区间长度-原来的和即为反转后的.另外对子树进行操作很显然想到dfs序.PS: 注意laz标记此时变为异或,即对同一块区间反转两次是无意义的,#includeusing namespace std;const int maxn = 2e5+5;int n;vectorvt原创 2017-10-24 23:38:35 · 355 阅读 · 0 评论