块状树裸题 块状树: 首先对树进行分块,分出的每一块都是一个连通块 通常的分块的方式如下: 1、父亲所在块不满,分到父亲所在块中 2、父亲所在块满,自己单独开一个块 (貌似有更为优越的分块方式? 注意这是不严格的分块,即每个块的大小不一定都是设定的阈值blo 对于这道题,首先修改和添加直接块内暴力就 ...
分类:
其他好文 时间:
2016-03-29 16:19:05
阅读次数:
209
Description小Y最近从同学那里听说了一个十分牛B的高级数据结构——块状树。听说这种数据结构能在sqrt(N)的时间内维护树上的各种信息,十分的高效。当然,无聊的小Y对这种事情毫无兴趣,只是对把树分块这个操作感到十分好奇。他想,假如能把一棵树分成几块,使得每个块中的点数都相同该有多优美啊!小...
分类:
其他好文 时间:
2016-01-13 17:31:01
阅读次数:
158
1086: [SCOI2005]王室联邦Time Limit:10 SecMemory Limit:162 MBSecSpecial JudgeSubmit:826Solved:471[Submit][Status][Discuss]Description“余”人国的国王想重新编制他的国家。他想把他...
分类:
其他好文 时间:
2015-10-15 08:42:18
阅读次数:
206
题意:
给出一颗n个结点的树,每个结点上有一种糖果∈[1,m];
一个人经过这个结点品尝糖果j获得的愉悦度为w[time[j]]*val[j] (其中time[j]指j的品尝次数);
给出q次操作,操作有两种:
1:更改某结点的糖果种类;
2:查询某两个结点路径上的愉悦度总和;
题解:
250s的神题,orz各位神犇;
将树分块,每块n^2/3大小,分成n^1/3块;...
分类:
其他好文 时间:
2015-08-09 14:08:11
阅读次数:
116
题目链接:BZOJ - 1036题目分析这道题可以用树链剖分,块状树等多种方法解决,也可以使用 LCT。修改某个点的值时,先将它 Splay 到它所在的 Splay 的根,然后修改它的值,再将它 Update 一下。询问 x, y 两点之间的路径时,假设 x 是深度小的那一个,先 Access(x)...
分类:
其他好文 时间:
2015-04-16 21:16:51
阅读次数:
227
块状树,每个块的根记录一下当前块内距块根为奇数距离的异或和和偶数距离的异或和,询问的时候讨论一下即可。总的节点数可能超过50000。#include#includeusing namespace std;#define N 100001int n,m,L,a[N];int en,v[N<<1],ne...
分类:
其他好文 时间:
2015-03-16 08:39:44
阅读次数:
649
记最开始的根为root,换根之后,对于当前的根rtnow和询问子树U而言,①rtnow==U,询问整棵树②fa[rtnow]==U,询问除了rtnow所在子树以外的整棵树③rtnow在U的子树里,且距离大于1,询问除了rtnow的除了其祖先是U的儿子的祖先的子树以外的整棵树④rtnow不在U的子树里...
分类:
其他好文 时间:
2015-03-14 08:24:55
阅读次数:
225
裸题,树状数组区间修改+单点查询。当然要稍微讨论一下链的左右端点是否修改的情况咯。#include#include#includeusing namespace std;#define N 300001int en,v[Nsiz[son[U]]) son[U]=v[i]; ...
分类:
编程语言 时间:
2015-03-09 14:26:55
阅读次数:
142
离线后以宗教为第一关键字,操作时间为第二关键字排序。块状树,线下ac,线上tle……#include#include#include#include#includeusing namespace std;queueq;int f,c;inline void R(int &x){ c=0;f=1...
分类:
其他好文 时间:
2015-03-09 08:11:54
阅读次数:
203
裸题,但是因为权在边上,所以要先把边权放到这条边的子节点上,然后进行链更新/查询的时候不能更新/查询其lca。#include#include#includeusing namespace std;#define N 100001#define BN 320#define INF 214748364...
分类:
其他好文 时间:
2015-03-08 18:46:58
阅读次数:
460