
线段树|树状数组
bllsll
巴拉拉,起飞。
展开
-
HDU 1166 树状数组模板题
#include #include #include #include #include using namespace std;const int maxn = 50005;int c[maxn];int n;int lowbit(int t){ return t&(-t);}void add(int i,int t){ while(i<=n)原创 2017-06-15 17:32:30 · 262 阅读 · 0 评论 -
线段树,树状数组基础
线段树和树状数组基本操作两者对比线段树操作单点修改区间修改单点查询区间查询组合操作树状数组操作单点修改区间查询区间修改区间修改单点查询区间修改区间查询线段树和树状数组基本操作线段树的操作有: 单点修改,logn 区间修改,logn (加lazy数组) 单点查找,logn 区间查找,logn树状数组的操作有: 单原创 2018-01-17 20:46:58 · 249 阅读 · 0 评论 -
线段树(扫描线)求面积并, 交以及周长
hotel的网好差…..线段树求面积并 HDU 1542 题意:给几个矩形,求总面积,重叠部分只算一次。 分析:可以先看看线段树算法了解扫描线思想.using namespace std;#define ll long long#define mem(a,b) memset(a,b,sizeof(a))const int maxn = 2000;double xx[ma原创 2018-01-24 22:52:51 · 703 阅读 · 0 评论 -
线段树题目
HDU2795 广告牌HDU 3308 LCIScodeforces 739C Alyona and towersHDU 5493 QueueHDU—2795 广告牌(单点查询,单点更新) 题意:有一个h*w的广告牌,有很多1*w的小广告,贴广告的优先级是先上然后左,按顺序给一些广告,依次输出该广告被贴在第几行,如果不能贴的话,就输出-1 注意:因为题目中的原创 2018-01-18 16:27:03 · 315 阅读 · 0 评论 -
Road HDU - 5861 线段树
题意: 有n个城市在一条直线上,每两个城市之间有个门,经过这个门是有过路费的,每个门只能开一次关一次,然后给你m个计划,每天一个计划,每个计划有两个值 a,b,表示从a到b。问你每天最少的过路费;思路:先用线段树,把每个门的开始和结束时间记录下来,然后处理一下,将开始的时间的地方+过路费,结束的时间的下一个地方-过路费注意: 先是RE ,可能是a#include <iostream>#includ原创 2017-07-19 12:52:11 · 315 阅读 · 0 评论 -
Death Sequence HDU - 5860 线段树
用线段树去模拟,开始每点的值为1,单点查询相对位置,然后用vis数组记录结果,将该点的值置0。 比如,我查第一个删除的点的相对位置为1,然后线段树找了了val[i]=1的位置,然后将该点置为0,删除下一个点的时候,相对位置就是k+1-1(因为前面已经删了一个了),然后用线段树找,再下一个点的时候相对位置就是k*2+1-2;然后如果相对位置temp小于等于左边的val,就往左走,否则就往右走,tem原创 2017-07-21 09:36:22 · 355 阅读 · 0 评论 -
线段树之简单方法
HDU 1556 题意:给你n行,每行两个整数a,b,表示从a,到b的数都加一,问最后每个数的值。 然后这个题可以用线段树的区间更新。但是还有一种更简单的方法就是用前缀和。 将 下标为a的标1,下标为b+1,的标-1.#include <iostream>#include <cstring>#include <algorithm>#include <cmath>#include <cs原创 2017-06-25 20:34:53 · 213 阅读 · 0 评论 -
HDU 4027 线段树 Can you answer these queries?
这个意思就是给你n个数,然后有两种操作 0 x y 表示从x到y,每个数都开根号 1 x y 表示输出x到y的和这个题的话,是区间更新,如果我们直接更新到点的话,时间复杂度是n^2,然后n可以到10^5,就会超时,用lazy,不更新到点?可是我们查询的时候还是要更新到点的啊,因为我们查的是和,他们每个数具体的值可能都是不相同的。因为每个 数都不会超过2^63,然后我们发现,用不了几次,他原创 2017-06-24 19:35:16 · 349 阅读 · 0 评论 -
线段树之lazy数组
lazy 用于区间更新。 总结一下,线段树中lazy一些情况Just a Hook HDU - 1698 题意:开始n个塔的值都是1,然后给你很多个操作,分别是 x y 1 x y 2 x y 3 表示将x到y 之间都值都改成1或2或3这个用lazy进行更新的时候, 是 lazy[ilazy[ilazy[i]=0; 因为这个题更新是有顺序的,之后的更新会把之前原创 2017-06-25 21:38:43 · 690 阅读 · 0 评论