线段树
文章平均质量分 60
里阿奴摩西
这个作者很懒,什么都没留下…
展开
-
[扫描线 线段树] BZOJ 2161 布娃娃
这读入真让人蛋疼本来想的是两个log的二分#include#include#includeusing namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,原创 2016-06-26 08:40:40 · 804 阅读 · 0 评论 -
[树链剖分 线段树 堆] BZOJ 4538 [Hnoi2016]网络
裸的树链剖分线段树里套个堆 最暴力的打法还有一种做法是考虑二分答案,如果大于答案的边都经过询问点,则往小的二分否则往大的二分。这样我们只要维护路径的交集。用rmq求lca的话可以做到O(1)求出两条路径的交集。可以离散后用线段树维护二分结构,并在对应的节点上记录路径交集O(logn)内回答询问了。原创 2016-04-21 13:32:40 · 501 阅读 · 0 评论 -
[线段树套平衡树] BZOJ 2883 gss2加强版
每个数支持出现一次 那么给每个数再赋一个权值pre每次查询只要查[L,R]中pre结果splay被卡了 打了个treap#include#include#include#include#define N 100010using namespace std;typedef long long ll;inline char nc(){ static char b原创 2016-05-16 21:30:41 · 593 阅读 · 0 评论 -
[线段树 中位数] BZOJ 4071 [Apio2015]巴邻旁之桥
首先如果办公室和家在同一侧,直接将距离加到答案中即可。如果办公室和家不在同一侧对于k=1,显然只需要将桥建在所有位置的中位数即可。对于k=2,可以发现每个人都会选择距离家和办公室中点较近的桥行走。那么我们就可以按照家和办公室中点将每个人排序,枚举分割点,将分割点前后的人分别处理。在权值线段树上二分求中位数#include#include#includeusing na原创 2016-05-04 21:24:58 · 1295 阅读 · 0 评论 -
[树链剖分 线段树] BZOJ 2908 又是nand
树剖 然后开32棵线段树 记录1/0 从左/右 经过 变成的值然后就是一些区间合并成一条有向路径#include#include#include#define V G[p].v#define nand(x,y) (!((x)&(y)))#define digit(x,k) (((x)>>((k)-1))&1)using namespace std;typedef lo原创 2016-04-19 18:41:43 · 766 阅读 · 0 评论 -
[树状数组套权值线段树] BZOJ 1901 Zju2112 Dynamic Rankings
模板题吧很多题解都是套主席树 没必要吧#include#include#include#define V G[p].vusing namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=bu原创 2016-05-13 16:24:18 · 664 阅读 · 0 评论 -
[LCT 线段树 dfs序] BZOJ 3779 重组病毒
%%%PoPoQQQ http://blog.csdn.net/popoqqq/article/details/45919545”题目大意:给定一棵树,初始每个点都有一个颜色,支持三种操作: 1.将某个点到根的路径上所有点染上一种新的颜色 2.将某个点到根的路径上所有点染上一种新的颜色,然后把根设为这个点 3.定义一个点的代价为这个点到根路径上颜色的种类数,求某个点子树中所有点原创 2016-04-30 14:05:07 · 736 阅读 · 0 评论 -
[线段树 期望] BZOJ 2752: [HAOI2012]高速公路(road)
分母很显然 分子的话 展开后发现只要维护vi,vi*i, vi*i*i的和就好了#include#include#includeusing namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=原创 2016-04-27 19:42:52 · 554 阅读 · 0 评论 -
[线段树] BZOJ 4499 线性函数
好裸的线段树#include#include#include#define P 1000000007using namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf原创 2016-04-12 19:59:15 · 624 阅读 · 0 评论 -
[树链剖分 线段树] BZOJ 3531 [Sdoi2014]旅行
树链剖分 给每一个信仰开一棵线段树然后就是动态开点的打码问题了#include#include#include#include#define V G[p].vusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fr原创 2016-04-12 19:54:43 · 364 阅读 · 0 评论 -
[线段树] BZOJ 4491 我也不知道题目名字是什么
用个线段树维护下#include#include#includeusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1==p2) return EOF原创 2016-04-07 18:41:46 · 820 阅读 · 0 评论 -
[线段树 标记] BZOJ 3226 [Sdoi2008]校门外的区间
放标记,两个标记搞死...还因为没判 l>r 狂T哪怕复习线段树这种称得上简单的数据结构 也能体会到很多东西 #include#include#includeusing namespace std;inline int read(){ int x=0,f=0;char ch=getchar(); while(ch'9'){if(ch=='(')f=-1;ch原创 2016-03-14 16:07:56 · 450 阅读 · 0 评论 -
[线段树 合并] BZOJ 4399 魔法少女LJJ
算法竞赛从此变为读题竞赛c话说加上 8 9 可做么...大数比大小 用对数然后就是递归线段树的一些操作了#include#include#include#includeusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(原创 2016-03-14 15:52:35 · 1776 阅读 · 0 评论 -
[二维线段树] BZOJ 1513 [POI2006]Tet-Tetris 3D
二维线段树 算个模板题吧 区间赋值 区间max一遇到带标记的树套树就蛋疼怎么说呢标记永久化 就不用下传了 从根到某个节点的区间上的路径自顶向下顺着递归的顺序修改 就省去了pushup#include#include#includeusing namespace std;typedef long long ll;inline char nc(){ stat原创 2016-05-16 21:33:19 · 467 阅读 · 0 评论 -
[主席树 树状数组套权值线段树] BZOJ 1146 [CTSC2008]网络管理Network
CTSC的裸题么先建主席树 然后修改么 可以发现对整棵子树有影响 对每个点记录每个权值的改变量然后用差分的思想 用树状数组区间修改 单点查询A掉后发现不用打主席树 可以最初的权值也可以树状数组上改 结果稍微改下程序 慢了5倍233#include#include#include#define V G[p].vusing namespace std;原创 2016-05-13 21:50:46 · 913 阅读 · 0 评论 -
[线段树 标记永久化 单调队列] BZOJ 1171 大sz的游戏 && BZOJ 2892 强袭作战
很好的题解:http://blog.sina.com.cn/s/blog_76f6777d0101dizp.html“考虑裸的n^2暴力dp. dp[i]=min(dp[j])+1 ( d[i]-d[j]由于第二个相对较难处理,首先考虑它. 把x,y离散化后搞个线段树,支持插入删除一个区间的答案,并且询问区间的答案即可.关于如何维护区间里的答案,虽然答案是原创 2016-04-19 12:47:00 · 1036 阅读 · 0 评论 -
[线段树优化建图最短路 bfs] BZOJ 3073 [Pa2011]Journeys
CA爷的题解:http://blog.csdn.net/CreationAugust/article/details/50739132#include#include#include#includeusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1=原创 2016-05-08 12:41:53 · 1096 阅读 · 0 评论 -
[计数排序 线段树] Codeforces 558E #312 (Div. 2) E. A Simple Task
开26棵线段树 记录每个字符的情况#include#include#includeusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1==p2)原创 2016-11-14 18:26:59 · 209 阅读 · 0 评论 -
[Manacher 线段树 离线] 2015 计蒜之道 初赛 第三场 商品推荐走马灯
题目大意是求区间内所有回文子串的权值和具体做法是离线处理询问 一个回文中心会对包含它的询问产生影响 而在询问左半边的中心最先被左边界限制 右半边也是这样那么把询问拆成左右两部分这里我还有个去重的过程 因为若一个回文中心是个字符而非间隙 那么我会把这个中心的权值算两边 那就减去好了官方题解:http://blog.jisuanke.com/?p=56题目询问的是一原创 2016-11-12 11:19:16 · 530 阅读 · 0 评论 -
[非旋转Treap 权值线段树] 2016 计蒜之道 初赛 第五场 腾讯的新游戏
可以发现对于每个队伍 最小需要的防御值是max(ai-i+1)因为打到第i个时已经加了i-1防御 然后所有队伍从小到大排序后 答案求法亦然那么我用treap维护每个队列 用权值线段树维护答案#include#include#includeusing namespace std;inline char nc(){ static char buf[100000原创 2016-11-10 07:00:47 · 379 阅读 · 0 评论 -
[扫描线 线段树上二分] BZOJ 4411 [Usaco2016 Feb]Load balancing
第一维扫描线第二维线段树上二分好久之前的代码了#include#include#include#includeusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,10000,std原创 2016-10-23 12:14:47 · 641 阅读 · 0 评论 -
[线段树 扫描线 鬼畜] BZOJ 3228 [Sdoi2008]棋盘控制 && BZOJ 1905 Soldier 士兵控制的棋盘
这种题目太恶心 把坐标轴转一下 就是裸的扫描线但是是网格 很恶心我用线段树算出无边界的情况 分奇数列和偶数列算两次然后四个边界算一下去掉四个角重复减的算一下 加回去#include#include#include#include#define cl(x) memset(x,0,sizeof(x))using namespace std;typedef l原创 2016-09-22 18:41:27 · 716 阅读 · 0 评论 -
[扫描线 线段树 暴力] BZOJ 4059 [Cerc2012]Non-boring sequences
扫描线:http://blog.csdn.net/PoPoQQQ/article/details/46380617暴力大法好:http://blog.csdn.net/geotcbrl/article/details/49797889定义lasti表示第i个元素上一次出现的位置(第一次出现则为0),nexti表示第i个元素下一次出现的位置(最后一次出现则为n+1),那么这个元素原创 2016-03-18 20:13:55 · 1039 阅读 · 0 评论 -
[鬼畜 树链剖分 线段树] BZOJ 2814 tree
类似最大子段和去搞 可以把两头看成各有两个接口 然后随意维护十几个值搞搞搞打了一中午 调了一晚上 发现看错题 改了改 调到睡觉心累#include#include#include#includeusing namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*原创 2016-09-04 07:56:56 · 608 阅读 · 0 评论 -
[莫队算法 线段树 斐波那契 暴力] Codeforces 633H Fibonacci-ish II
题目大意:给出一个长度为n的数列a。对于一个询问lj和rj,将a[lj]到a[rj]从小到大排序后并去重,设得到的新数列为b,长度为k,求F1*b1+F2*b2+F3*b3+...+Fk*bk,其中F为斐波那契数列,F1=F2=1。对每个询问输出答案模m。区间查询离线 用莫队算法开棵权值线段树,然后用斐波那契的性质updateF(n+m)=F(n+1)*F(m)+F(n)*F(原创 2016-04-05 19:38:01 · 1706 阅读 · 0 评论 -
[三合一 BFS 平衡树 线段树] BZOJ 2158 Crash 的旅行计划
无耻的三合一详见Claris博客:http://www.cnblogs.com/clrs97/p/4403250.html原创 2016-08-23 18:23:49 · 702 阅读 · 0 评论 -
[树链剖分 线段树] BZOJ 4127 Abs
每个点只可能从负到正一次暴力开两棵线段树分别维护正负均摊nlogn原创 2016-08-23 18:19:45 · 583 阅读 · 0 评论 -
[线段树优化 DP] BZOJ 3242 [Noi2013]快餐店
一开始以为是环套树的直径 后来发现不对其实做法差不多 暴力断开一条边 然后找树直径这可以在环上建线段树优化#include #include #include using namespace std; typedef long long ll; inline char nc() { static char buf[100000],*p1=buf原创 2016-08-28 08:04:09 · 731 阅读 · 1 评论 -
[主席树区间覆盖 线段树] UNR #1 火车管理
火车管理我们可以建立一颗可持久化线段树,维护每个铁路每个时间的栈顶的吨位和栈顶火车的入栈时间。我们再维护一颗线段树用来统计答案。于是操作就显得很简单了:区间询问:直接在答案线段树里询问即可。区间压数:在可持久化线段树上进行区间覆盖,这个是十分基础的数据结构技巧,然后在答案线段树上修改一下。区间弹数:由于我们记录了入栈时间,所以我们删完后用原创 2016-07-20 09:24:53 · 459 阅读 · 0 评论 -
[线段树 单调栈] UNR #1 争夺圣杯
争夺圣杯用单调栈求出left right可以发现每个点的贡献是关于left right的分段函数然后就是分段函数累加求和当时打的线段树看了题解涨姿势了 可以差分 做到O(n)#include#include#includeusing namespace std;typedef pair abcd;typedef long long ll;inline原创 2016-07-20 09:18:38 · 657 阅读 · 0 评论 -
[树状数组 线段树] BZOJ 3333 排队计划
Po姐:http://blog.csdn.net/popoqqq/article/details/40392219?utm_source=tuicool&utm_medium=referral#include#include#includeusing namespace std;typedef long long ll;inline char nc(){ static原创 2016-06-29 16:27:28 · 340 阅读 · 0 评论 -
[线段树 Treap] BZOJ 2770 YY的Treap
hzwer:首先询问的两个点的key是一个区间则lca的key是在这个区间内pri最小的那么就变成了维护一个集合支持查询区间最值,加入删除元素#include#include#include#includeusing namespace std;typedef long long ll;inline char nc(){ static char b原创 2016-07-28 08:21:13 · 523 阅读 · 0 评论 -
[扫描线 线段树 拓扑排序] BZOJ2584 [Wc2012]memory
%%% zky :http://blog.csdn.net/iamzky/article/details/42166795“P.S.找来kAc的标程想对拍,然后越改越像越改越像……”——zky找来zky的程序 然后越改越像#include#include#include#include#include#include#define V G[p].v#define ep原创 2016-03-18 20:34:55 · 684 阅读 · 0 评论