数据结构
[数据结构]
sb题
「SHOI2015」脑洞治疗仪
[线段树]
线段树维护最大子段和模板题
操作求出内的个数,然后在上二分求出右端点,转化为区间置
「SDOI2017」树点涂色
[LCT]
看到操作1很容易想到LCT,然后考虑路径的权值和LCT有什么关系
发现点到根路径的权值就是到根路径上经过的轻边个数+1,并且这个东西也有可减性
每条重链可以看成一个联通块,经过轻边就相当于跨过联通块,使权值+1
注意到,只有在access
的时候会改变轻重边,那么用一棵dfn序线段树维护信息即可
例如,把当前的重儿子变成轻儿子,就相当于把所在
splay
中深度最浅的点的子树权值
「TJOI2015」旅游
Description
题面太屎,记录一下
给你一棵点权树(权值为)
每次询问两个点,你要在到的这条链上依次找出两个点,使得最大
并且要支持点权链加
Solution
[线段树] [树链剖分]
考虑序列上怎么做
直接线段树,维护,以及当前区间的答案(左右儿子答案与当前点的取最大值)
在树上的话,套层树剖即可,注意不仅需要维护,还要维护,因为树剖在跳的时后,一边是正的一边是反的
「LNOI2014」LCA
很经典的一个套路了,不过这道题一直没写
今天拿到这道题的时候居然还想了半天才想出来。。。
询问显然可以拆成和,然后考虑离线求出前缀的答案
按到的顺序,每次把到根路径上所有点权值+1
若询问,只要求到根路径权值和即可
「SDOI2010」捉迷藏
[曼哈顿与切比雪夫距离]
[k-d tree]
两个模板
最小值直接k-d tree
最大值转化成切比雪夫距离,直接求就行了
「JXOI2017」颜色
[扫描线] [线段树]
枚举剩下的那一段区间
对于每种颜色处理出分别表示该颜色出现的最靠左,最靠右的位置
若一个区间合法,则,且
显然,对于一个确定的右端点,左端点的范围是一段连续的区间;左端点确定时同理
就和这个题一模一样了
这里我看的题解的做法是,枚举右端点扫描线,这个限制直接二分找到最靠左的左端点;这个限制在扫描线的过程中搞个线段树,区间置
「BZOJ3439」 Kpm的MC密码
[trie] [可持久化]
倒着建可持久化trie
,模板题
不知道为什么bzoj
上一直会t,交到dark bzoj
上能过