线段树
文章平均质量分 82
BraketBN
这个作者很懒,什么都没留下…
展开
-
【BZOJ1798】[Ahoi2009]Seq 维护序列seq 【线段树】
【题目链接】线段树各种标记一直没写过。注意乘法的时候也要更新加法标记。/* Footprints In The Blood Soaked Snow */#include #include using namespace std;typedef unsigned long long ULL;const int maxn = 100005;int n;ULL原创 2016-03-30 08:40:01 · 416 阅读 · 0 评论 -
【BZOJ3878】[Ahoi2014]奇怪的计算器【线段树】
【题目链接】先把Xi排序,四种操作都不会改变Xi的相对顺序,这样L和R就是在左边和右边出现了,方便区间赋值。然后各种标记传一传就行了。赋值标记可以变为 乘法标记 = 0,加法标记 = 要赋的值,这样就可以少传一个标记。/* Telekinetic Forest Guard */#include #include #include using namespace std原创 2016-05-12 23:25:51 · 485 阅读 · 0 评论 -
【BZOJ3862】Little Devil I【树链剖分】【线段树】
【题目链接】一棵树,每个边有黑白两种颜色,要支持三种操作1 一条链上的颜色取反2 只有一个顶点在一条链上的边的颜色取反3 查询一条链上黑色边的个数两个线段树,分别维护重链的颜色,轻链的颜色。重链的两个端点需要分别讨论。/* Telekinetic Forest Guard */#include #include #include using n原创 2016-05-17 16:06:51 · 736 阅读 · 0 评论 -
【BZOJ1103】[POI2007]大都市meg【树链剖分】【线段树】【或 树状数组 + dfs序】
【题目链接】想都没想直接树剖去了...看了题解发现树状数组维护dfs序也可以做。树剖:/* Pigonometry */#include #include #include using namespace std;const int maxn = 250005;int n, head[maxn], cnt;struct _edge { int原创 2016-04-21 08:38:58 · 908 阅读 · 0 评论 -
【BZOJ2243】[SDOI2011]染色【树链剖分】【线段树】
【题目链接】很容易想到树剖,然后主要是线段树。sum记录一段区间内的颜色子段个数,lx和rx分别记录左端点和右端点的颜色是什么。然后就差不多了。注意树剖爬的时候也得注意节点颜色。/* Pigonometry */#include #include using namespace std;const int maxn = 100005, maxm = maxn原创 2016-04-01 20:22:51 · 414 阅读 · 0 评论 -
【BZOJ4034】[HAOI2015]T2【树链剖分】【线段树】
【题目链接】之前写的,忘了发上来了。裸树剖。/* Footprints In The Blood Soaked Snow */#include #include using namespace std; typedef long long LL; const int maxn = 100005; int n, m, head[maxn], cnt, w[max原创 2016-03-29 11:07:11 · 347 阅读 · 0 评论 -
【BZOJ4196】[Noi2015]软件包管理器【树链剖分】【线段树】
【题目链接】1A了。。裸树剖,没啥说的.../* Footprints In The Blood Soaked Snow */#include #include using namespace std;const int maxn = 100005;int n, head[maxn], cnt;struct _edge { int v, next;} g原创 2016-03-29 11:00:22 · 354 阅读 · 0 评论 -
【BZOJ1576】[Usaco2009 Jan]安全路经Travel【最短路树】【树链剖分】【线段树】
【题目链接】【hzwer的题解】orz倍增求lca,根节点的深度不能从0开始。线段树手滑打跪了orz,WA1发。/* Telekinetic Forest Guard */#include #include #include #include #include #include using namespace std;typedef pair pii;c原创 2016-05-31 10:46:35 · 811 阅读 · 0 评论 -
【BZOJ3747】[POI2015]Kinoman【线段树】
【题目链接】看到数据范围以为是O(n)做法,再看看status似乎带了个log?然后去搜题解,没想到是线段树= =。题解:设pre[i]表示与i这个位置上的数相等的前一个数的下标。用线段树维护答案。枚举右端点,每次加入一个数,那么pre[i] + 1到i这段位置的答案加上这个数的权值,pre[pre[i]] + 1到pre[i]这段位置的答案减去这个数的权值,然原创 2016-05-09 15:22:04 · 1196 阅读 · 0 评论 -
【BZOJ1858】[Scoi2010]序列操作【线段树】
【题目链接】调了一早上,码力++。大概跪了几个地方:pushdown里rx1手滑打成了rx0。查询最大子段函数,区间合并忘了上传sum。mx1合并时候直接写了赋值,忘了和原来的值取max。/* Pigonometry */#include #include #include using namespace std;const int maxn原创 2016-04-30 14:13:18 · 695 阅读 · 0 评论 -
【BZOJ4397】[Usaco2015 dec]Breed Counting【前缀和】【或莫队】【或线段树】【或可持久化线段树】
【题目链接】数据结构学多了,看到题解发现3个前缀和就搞定了。弱智+2另外也可以线段树,也可以3个主席树。。。莫队:/* Telekinetic Forest Guard */#include #include #include using namespace std;const int maxn = 100005, maxsqrtn = 316;i原创 2016-05-25 19:01:00 · 520 阅读 · 0 评论 -
【BZOJ2773】ispiti【CDQ分治】【线段树】
【题目链接】很容易看出来是CDQ分治,但是细节比较多。令B为x轴,A为y轴...给x轴排序要按降序排,而且当插入与查询在同一个点时,要先查询再插入,这样就不用维护次小值了。光给操作离散化了,忘了给点离散化...导致大数据GG。/* Pigonometry */#include #include #include using namespace原创 2016-04-28 12:14:43 · 670 阅读 · 0 评论 -
【BZOJ3339】Rmq Problem【离线】【线段树】【mex】
奇怪的线段树姿势get。看了hzwer的题解,发现这个奇怪的姿势。权值也是标记.../* Footprints In The Blood Soaked Snow */#include #include using namespace std;const int maxn = 200005, maxm = maxn, inf = 0x3f3f3f3f;in原创 2016-03-08 23:04:32 · 529 阅读 · 0 评论 -
【BZOJ3585】mex【离线】【线段树】【mex】【离散化】
就是BZOJ3339的加强版。加个离散化就行了。(mex的离散化有点不一样/* Footprints In The Blood Soaked Snow */#include #include #include #include using namespace std;const int maxn = 200005, maxm = maxn, in原创 2016-03-08 23:07:39 · 371 阅读 · 0 评论 -
【SPOJ-GSS1】Can you answer these queries I【线段树】【最大子段和】
题意:给出一些数,一些询问,每次询问一段区间内最大的子段和是多少。无修改的小白逛公园...#include #include using namespace std;const int maxn = 50005, inf = 0x3f3f3f3f;int n, m, tr[maxn << 2], trl[maxn << 2], trr[maxn << 2], su原创 2016-02-25 17:08:20 · 490 阅读 · 0 评论 -
【SPOJ- HORRIBLE】Horrible Queries【线段树】
题意:区间加法,区间求和。裸模板。似乎不会写了...注意加法里的v题里说#include typedef unsigned long long ULL;const int maxn = 100005;int n;ULL addv[maxn << 2], tr[maxn << 2];inline int iread() { int f原创 2016-02-25 18:20:00 · 820 阅读 · 0 评论 -
【BZOJ1645】[Usaco2007 Open]City Horizon 城市地平线【线段树】【矩形面积并】
【题目链接】/* Pigonometry */#include #include using namespace std;const int maxn = 40005, maxm = maxn << 1;typedef long long LL;int n, m, pos[maxm], tr[maxm << 2], mxv[maxm << 2];struct _line原创 2016-04-13 19:42:53 · 816 阅读 · 0 评论 -
【HDU1255】覆盖的面积【线段树】【矩形面积交】
【题目链接】再记录一个rep数组,表示当前区间至少被覆盖2次的长度。/* Pigonometry */#include #include #include using namespace std;typedef double DB;const int maxn = 1005;int n, m, tot, tr[maxn << 4];DB sum[maxn <<原创 2016-04-13 22:11:30 · 386 阅读 · 0 评论 -
【HDU1542】Atlantis【线段树】【矩形面积并】
【题目链接】注意pushup那里是给sum赋值不是给sum加。/* Pigonometry */#include #include #include using namespace std;typedef double DB;const int maxn = 105;int n, m, tot, tr[maxn << 4];DB sum[maxn << 4]原创 2016-04-13 21:44:43 · 329 阅读 · 0 评论 -
【HDU1828】Picture【线段树】【矩形周长并】
【题目链接】线段的循环要从1到2n,与面积并不一样,面积并是1到2n-1。/* Pigonometry */#include #include #include using namespace std;const int maxn = 5005, maxm = maxn << 1;int n, m, tr[maxm << 2], sum[maxm << 2], segnu原创 2016-04-14 22:53:47 · 382 阅读 · 0 评论 -
【BZOJ4631】踩气球【暴力】【线段树优化】
【题目链接】记录每个盒子被哪些熊孩子的区间覆盖,用链表存起来。又因为熊孩子的区间是连续的,所以用线段树优化一下就行了。注意空间大小,不然容易RE WA/* Think Thank Thunk */#include #include #include using namespace std;typedef long long LL;const int max原创 2016-07-08 17:46:57 · 1304 阅读 · 1 评论