随笔分类 - 数据结构—线段树进阶
摘要:看到换根果断lct啊,然而其实我板子还没有打熟,还不会维护子树信息,于是就挂掉了…… 然而正解并不是lct。 其实好像很久很久以前将lca的时候好像讲到过一道换根的题,当时没有听懂。 直接说正解吧: 把dfs序搞出来用线段树维护。 用一个变量记录当前根节点,操作一直接改就行了。 然后是操作三: 分情
阅读全文
摘要:作者的题解: 如果一段操作被执行,会对整个栈有什么影响呢? 把栈弹出若干个数后再插入若干个数。 线段树: 每个点纪录三个值:执行完这段操作后会删多少个,再插多少个,插的和一共是多少。 合并值时再用一个函数查找左孩子被从右删除若干个后剩下的插入总和是多少。 建树复杂度O( N log N ), 单次查
阅读全文
摘要:又是一道神仙题。考试的时候居然打了一个回滚莫队,不知道我咋想的…… 先说一个某OJT80,洛谷T5分的思路(差距有点大): 可以把位置和编号映射一下,区间内最大值和最小值对应的位置,每次更新,直到找到符合条件的情况,复杂度玄学。最值的维护可以用ST表或者线段树,前者复杂度低些。 然后说正解吧: 先放
阅读全文
摘要:一道非常神仙的题. 算法一:对于20%的数据: 模拟,直接走K步,时间复杂度O(K) 算法二:对于40%的数据:走M*N步内必有一个循环节。直接走,找循环节,时间复杂度O(M*N) 正解大概有两种做法(我是第三种……) 1.利用分块思想,一行为一块。用一个数组记录第一列第i行走M步到达的位置jump
阅读全文
摘要:正解炸了…… 考试的时候想到了正解,非常高兴的打出来了线段树,又调了好长时间,对拍了一下发现除了非常大的点跑的有点慢外其他还行。因为复杂度算着有点高…… 最后正解死于常数太大……旁边的lyl用同样的算法拿了90分我却拿了个暴力的分40……花了那么多时间一分没多拿原地爆炸…… 由于大部分时间押在了T1
阅读全文
摘要:调了一天,恶心死我了……作者的题解水的一b…… 测试点1~6: 暴力修改查询即可,期望得分30。 测试点7~14: k=1e5,相当于没有限制,那么对于树上每个点建权值线段树,线段树合并即可。 期望的分40,结合算法1 70分。 1 #include<algorithm> 2 #include<io
阅读全文
摘要:Bzoj2752: [HAOI2012]高速公路(road) 比较恶心的一道题,关键在于r的加1减1搞得很乱。所以以下的r都是原题给出的r,并没有减1。 其实这道题是一个假的期望,答案就是区间的所有子区间和除以$C_{len}^2$,然后就考虑如何求所有子区间和, 直接暴力枚举肯定不行,可以像‘树上
阅读全文
摘要:BZOJ4184 shallot 就是带删除的线性基,考虑对时间分治,就是按时间建线段树,对于一个数,得到他的存在时间区间[l,r],然后对线段树上相应节点记录这个数。最后dfs线段树,在叶子节点求解。 但是我一开始T了,因为我对于每个数[1,n],都重新dfs了一遍,就导致时间复杂度较大。其实可以
阅读全文
摘要:NOIP2016天天爱跑步 这题一看显然lca+树上差分,但是因为有w的限制不能直接加,所以考虑权值线段树合并, 每个选手的起点终点对于不同的节点的影响是不同的,这就非常麻烦了,但是可以发现无论如何他的深度是固定的,而对于一个节点i,能使他+1有如下两种情况: 1.dep[x]=dep[i]-w[i
阅读全文
摘要:C. 雨天的尾巴 C. 雨天的尾巴 C. 雨天的尾巴 题目描述 N个点,形成一个树状结构。有M次发放,每次选择两个点x,y对于x到y的路径上(含x,y)每个点发一袋Z类型的物品。完成所有发放后,每个点存放最多的是哪种物品。 题目描述 N个点,形成一个树状结构。有M次发放,每次选择两个点x,y对于x到
阅读全文