数据结构
文章平均质量分 78
hzt_Owen
这个作者很懒,什么都没留下…
展开
-
【bzoj 1901】树状数组套线段树
带修改区间第k大。用树状数组维护线段树的前缀和。#include #include #include #include #include #include #define inf 1000000000#define Rep(i, x, y) for (int i = x; i <= y; i ++)#define u t[x]#define Lc t[u.lc]#def原创 2015-01-29 14:08:44 · 594 阅读 · 0 评论 -
【bzoj 3821】玄学 线段树
给一个数列ai。要求维护(在线):1.将ai到aj的值变为(ax + b) mod m2.问执行操作i到操作j后ak的权值对操作建线段树,一个线段树节点只在加入操作r后update,一个节点可以用一个长度为O(l)的数组维护,询问时二分下即可。log平方n。#include #include #include #include #include #define Rep(i原创 2015-11-24 19:02:57 · 683 阅读 · 0 评论 -
【bzoj3626】树链剖分
给一棵n个节点的有根树,q次询问,每次询问sigma{ l考虑问题的转化,如果将[l, r]中的点都打上标记,令Sx为x节点的子树中被标号点个数,则答案为z到根的路径上的Sx的和。离线后用前缀和处理。#include #include #include #include #include #include #define Rep(i, x, y) for (int i = x;原创 2015-01-02 13:15:15 · 458 阅读 · 0 评论 -
【Codechef】【Gangsters of Treeland】Lct 线段树
Problem code: MONOPLOY给定一棵n个点的树,1号节点为根。初始时每一个点都被染成了一种不同的颜色。如果一条边的两个端点颜色不同,则其费用为1,否则费用为0。有q次操作,操作有下面两种:将从点u到根的路径上的所有点染成一种新的颜色。询问点u子树中所有点走到根的费用的平均数。n, q 可以发现修改操作就是Lct里的Access。然后就发现只有在虚边与原创 2015-01-26 14:58:42 · 586 阅读 · 0 评论 -
【Codechef】【Chef and Graph Queries】Lct 可持久化线段树
Problem code: GERALD07一个无向图,q次询问,每次询问留下li到ri的边有几个联通块。n, m, q 先预处理出每个边能替代之前最早的的边bi使其还是一棵树,用Lct维护。用可持久化线段树查询。#include #include #include #include #include #include #define Rep(i, x, y) for (i原创 2015-01-26 10:45:28 · 879 阅读 · 0 评论 -
【bzoj 3615】MSS 分块 线段树的合并和拆分
二维坐标上有n个点,每维坐标互不相同。初始时每个点为一个独立的集合,要求维护:合并两个集合将集合id某一维以v为界拆分为两个集合将集合x的数都加d询问一个集合的sum,max,min考虑按x坐标分块,对每个集合,每块建一个线段树。/************************************************************** P原创 2015-12-28 10:59:33 · 740 阅读 · 0 评论 -
【bzoj 3815】卡常数
找球面点,用k-d树,在不可能出现的长方体剪枝即可。#include #include #include #include #include #define Rep(i, x, y) for (int i = x; i <= y; i ++)#define Dwn(i, x, y) for (int i = x; i >= y; i --)#define RepE(i, x) f原创 2015-12-11 13:58:06 · 1269 阅读 · 0 评论 -
【Spoj COT3】SG函数 Trie启发式合并
给一颗有黑白点的有根树,每次可以选一个白点并将其到根的路径染黑,问先手是否必胜以及第1步的可能选择。子树间相互独立,用Trie维护一个子树操作一次可达SG值,这个用Trie启发式合并可求,需要打标记。#include #include #include #include #include #define Rep(i, x, y) for (int i = x; i <= y; i原创 2015-11-02 08:12:48 · 1048 阅读 · 0 评论 -
HNOI 2015
http://www.cnblogs.com/New-Godess/p/4450078.html/************************************************************** Problem: 4009 User: hzt1 Language: C++ Result: Accepted Time:115原创 2015-08-16 10:24:31 · 537 阅读 · 0 评论 -
【NOI集训】【XJ】可持久化左偏树
http://hzxjhs.com:83/contest/456果断可并堆#include #include #include #include #include #include #define Rep(i, x, y) for (int i = x; i <= y; i ++)#define RepE(i, x) for (int i = pos[x]; i; i =原创 2015-07-05 21:03:47 · 2422 阅读 · 0 评论 -
【bzoj1367】左偏树
1367: [Baltic2004]sequenceDescription这道题的结论证明参见 论文对于求不下降序列 最后的做法就是:维护几段连续的序列,使它们的中位数不下降 然而转化到递增序列,我们只需要将每个数读进来的之后减去它的下标就可以了所以我们对于每一段已求好的序列,既要维护它的中位数,又要支持合并因为我们合并的前提原创 2015-05-30 09:09:21 · 684 阅读 · 0 评论 -
左偏树 hdu1512
#include #include #include #include #include #include #define Rep(i, x, y) for (int i = x; i <= y; i ++)#define RepE(i, x) for (int i = pos[x]; i; i = g[i].nex)#define Dwn(i, x, y) for (int i原创 2015-05-21 09:39:20 · 348 阅读 · 0 评论 -
【Codechef ForbidenSum】可持久化线段树
Problem code: FRBSUM定义一个多重集S的ForbiddenSum为,不能表示为S的某个子集中所有元素之和的最小元素。比如,多重集 {1, 1, 3, 7}的ForbiddenSum为6。给定长度为n的序列a,有m次询问,每次给定li 和ri ,询问多重集 S = { al, al+1,……,ar } 的ForbiddenSum。n, m 思路:暴力是将这段排序原创 2014-12-28 13:44:00 · 682 阅读 · 0 评论 -
【noi2005】维护数列
时隔半年我又来写这道题了,这次的Splay模版简练多了。有好多种操作,注意垃圾回收。#include #include #include #include #include #include #define Rep(i, x, y) for (int i = x; i <= y; i ++)#define RepE(i, x) for (int i = pos[x]; i; i原创 2014-12-02 20:46:42 · 533 阅读 · 0 评论 -
【bzoj2002】弹飞绵羊
Lct裸题给出一棵树,有修改及询问,修改操作为修改一个节点的父亲,询问一个节点到根的点数。询问及修改前只需Access一遍即可。#include #include #include #include #include #include #define Rep(i, x, y) for (int i = x; i <= y; i ++)#define RepE(i, x)原创 2014-12-01 21:23:01 · 556 阅读 · 0 评论 -
【bzoj4150】[AMPPZ2014]The Staging 线段树
在舞台上有n个枪手,第i个枪手瞄准了第p[i]个枪手,将于第u[i]秒开枪。一个枪手如果成功开枪,那么被瞄准的枪手会立刻死亡。现在给出q次修改操作,请在一开始和每次修改操作后统计出最后存活的枪手个数。p[i]互不相同,p[i] != i。首先发现枪手形成若干环。于是可以用线段树维护,一个区间的开头那个人的状态对应结尾的状态,以及存活人数。其他想法:u[i]折线图中只有下降的区间原创 2015-10-22 16:47:16 · 867 阅读 · 0 评论