题解:思想上是深搜+栈,每当栈中元素达到b个,就分成一个块。
然后最后会剩下部分,分到最后一个块中。
其实我认为开始的所有块都是b个啊,然后最后一个块是b+若干个,不会超过2b。
不是很理解2b~3b这个概念。
代码:
#include
#include
#include
#include
#define N 1010
using namespace std;
s...
分类:
其他好文 时间:
2015-01-17 11:18:04
阅读次数:
167
题目大意:给定一棵树,要求将这棵树分成一些块,使每块大小在[B,3B]之间
《手把手教你块状树系列》
- -终于搞懂这题怎么做了
- -去网上扒了个代码居然是错的 坑死我了
- -还好题解的思想是对的
朴素的分块方式是贪心 能加就加 这种方法存在着严重的效率问题 可以被菊花卡成O(n)块
因此我们可以为其它的块预留位置 如果一块大小刚好>=b 就将这坨东西分成一块
首先任选一点开始深...
分类:
其他好文 时间:
2015-01-16 10:10:10
阅读次数:
128
这两天我都在干嘛= =。。。浪死了啊啊啊终于调出来了这道2b题。。。莫队~莫队~但是注意要直接树分块!按L排序,分块R和Change即可具体方法还有复杂度什么的详见vfk的blog好了 1 /*****************************************************....
分类:
其他好文 时间:
2014-12-30 20:37:18
阅读次数:
146
题目大意:同3720 增加了一个操作 即删除一个点与父亲节点的连边
3720题解见 http://blog.csdn.net/popoqqq/article/details/41481439
断开一个节点与父节点的连边时
如果这个点是所在块的根节点,直接断掉就行
如果这个点不是所在块的根节点,那么就要把这个块分裂,这个点以及在块中的子树都分裂到新的块中,细节讨论较多不大好写0.0
然...
分类:
其他好文 时间:
2014-11-26 14:20:04
阅读次数:
218
题目大意:维护一棵树,每个点有一个权值,提供下列操作:
1.询问某棵子树中有多少个节点的权值大于x
2.修改某个节点的权值
3.增加一个叶子节点
强制在线
传说中的树分块
首先DFS,对于每个节点,如果这个节点的父亲节点所在块未满,就塞进父节点所在块中,否则自成一块,然后与父节点所在的块连边
然后就按照分块直接搞吧0.0 细节实在是太多了 所以写挂的地方看看本蒟蒻的代码就好了0.0...
分类:
其他好文 时间:
2014-11-25 16:38:40
阅读次数:
195
题目大意:给出一棵树,问任意两点之间有多少种不同的颜色,一个人可能会有色盲,会将A和B当成一种颜色。
思路:比较裸的树上莫队,写出来之后,很慢,怀疑是分块的缘故,然后果断找了当年比赛的标称交上去,瞬间rk1,大概看了一眼,他好像是直接用DFS序+曼哈顿距离最小生成树搞的,为什么会比分块快?
昨天下午看到这个题之后就一直在研究树上莫队的正确姿势,然后先写了树分块,后来看了很多牛人的SPO...
分类:
移动开发 时间:
2014-11-25 10:56:58
阅读次数:
248
3744: Gty的妹子序列Time Limit:15 SecMemory Limit:128 MBSubmit:101Solved:34[Submit][Status]Description我早已习惯你不在身边,人间四月天 寂寞断了弦。回望身后蓝天,跟再见说再见……某天,蒟蒻Autumn发现了从 ...
分类:
其他好文 时间:
2014-11-14 22:37:16
阅读次数:
341
题目大意:给定n个点,每个点有一个颜色,m次询问,每次询问一个区间内随机选出两个点颜色相同的概率是多少
OTZ莫队算法……
具体做法无论是分块还是曼哈顿最小生成树网上都讲解的很详细 我就不累述了
这个题的做法是记录一个cnt数组表示当前区间内每种颜色有多少个
加入一个颜色为x的点就ans+=cnt[x] 然后cnt[x]++
减少一个颜色为x的点就cnt[x]-- 然后ans-=cnt[...
分类:
编程语言 时间:
2014-11-07 11:20:29
阅读次数:
270
分块 Or 线段树 分块的登峰造极之题每块维护8个值:包括左端点在内的最长1段;包括右端点在内的最长1段;该块内的最长1段;该块内1的个数;包括左端点在内的最长0段;//这四个是因为可能有翻转操作,需要swap 0有关的标记 和 1有关的标记包括右端点在内的最长0段;该块内的最长0段;该块内0的个数...
分类:
其他好文 时间:
2014-10-23 16:11:18
阅读次数:
242
分块 或 树套树。在每个块中维护一个有序表,查询时各种二分,全都是分块的经典操作,就不详细说了。块的大小定为sqrt(n*log2(n))比较快。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 i...
分类:
其他好文 时间:
2014-10-14 22:49:59
阅读次数:
258