随笔分类 - 线段树
摘要:Hot is Cold 好像我写麻烦了, 其实只用线段树维护区间每个数反转, 区间赋值就可以。
阅读全文
摘要:Array Game 考虑最裸的dp去求胜负态。 dp[ i ] 从后面的 m 个状态转移过来。 我们考虑如何用线段树维护, T[ i ][ mask ] 表示 i 这段区间如果后面接的m位是mask使时开头m位的mask, 对于修改的话只要维护一个反过来的T2就可以了。 感觉是可以想出来的题, 为
阅读全文
摘要:DFS 考虑dfs的非树边全部都是反祖边, 对于新加的一条边那么所有它一定是一条反祖边, 那么用线段树把 对于这条边不可行的点全部ban掉就好了。
阅读全文
摘要:因为mod不是质数, 所以要处理一下除的操作, 考虑吧mod分解质因数, 然后把所有数都按mod 分解出来的质因数进行拆分, 然后就能维护了。
阅读全文
摘要:HDU - 5770 没想出来, 感觉不应该啊, 没有想到转换成二维上的点的问题。 对于对钥匙和宝藏(u, v), 如果lca != u && lca != v 那么起点从u子树出发, 终点在v子树就能得到贡献。 子树在dfs序下是连续一段, 所以就对应到二维平面一个矩形加上一个数值, 求值最大的点
阅读全文
摘要:HDU - 5361 直接用线段树维护最短路, 每次取出最小的去扩展。 好像还有nb的并查集写法。
阅读全文
摘要:HDU - 5371 求出每个点的最大回文长度。 然后转换成线段互相覆盖的最大长度。 然后离线之后用线段树 或者 set维护一下就好了。
阅读全文
摘要:HDU - 5390 看到的第一感觉就是树链剖分 + 线段树套字典树, 感觉复杂度不太对。 其实这种路径其实很特殊, 一个点改变只会影响它儿子到根的路径, 并且这种求最优值问题可以叠加。 所以我们修改的时候对对应dfs序打标记, 询问的时候在线段树上从上往下对每个对应区间求个最优值。 这样还会被卡M
阅读全文
摘要:Max Mex 感觉好脑洞的一道题啊。 用0 - n - 1的值建线段树, 每个区间维护 l - r 能否在一条路径上, 保存两个端点。 感觉我的第一思路是二分答案, 然后判断那些点是否在一条路径上, 没想到这两条路径也能合并, 这样就能用线段树维护了。 合并两条路径枚举合并之后的两端点, 暴力判。
阅读全文
摘要:Serge and Dining Room 改变选的顺序, 最后的结果不变。 这种题一般都和前缀和有关, 建个线段树维护前缀和就好了。
阅读全文
摘要:Karen and Cards 刚开始想的是容斥, 但是感觉不太好容斥, 然后就gun去看题解了。。 我们考虑枚举 a , n张排分成两种 >= a 和 < a,然后我们把后两维看成平面上的点, 考虑哪些点会受到 限制, 对于 >= a 的卡片来说, 受限制区域为整个区域减去右上角矩形, 对于 <
阅读全文
摘要:Andryusha and Nervous Barriers 问题本质我们只需要找出每个线段两端下面第一个碰到的是哪个线段就好啦。 按照 h 排序我们就能用线段树套set 不管维护什么都能维护出这个东西,但是 如果set里维护 u + s的话,就能优化成单调栈, 好优秀啊。
阅读全文
摘要:Cow Tennis Tournament 感觉这题的难点在于想到求违反条件的三元组。。 为什么在自己想的时候没有想到求反面呢!!!! 违反的三元组肯定存在一个人能打败其他两个人, 扫描的过程中用线段树维护一下就好了。 反思: 计数问题: 正难则反 正难则反 正难则反 !!!!
阅读全文
摘要:Alphabet Permutations 转换一下, 本质就是求相邻的逆序对个数, 每次询问只是给个比较方式。 然后用线段树维护各种相邻逆序对的个数。 这个区间修改成一个数的都能用set维护的。
阅读全文
摘要:Yash And Trees 用bitset维护每个节点拥有哪些数。
阅读全文
摘要:Ultimate Weirdness of an Array 写不出来, 日常好菜啊。。 考虑枚举GCD, 算出一共有多少个对 f(l, r) <= GCD, 我们用fuc[ i ] 表示的是在 l = i 这个位置开始, 最小的合法的 R, 可以发现这个函数随 i 单调不下降, 枚举GCD 的时候
阅读全文
摘要:Jeff and Removing Periods 题目转换一下就变成询问区间里面有多少个不同数字, 和区间里面有没有等差数列的相同数字。 离线之后可能分别用树状数组和线段树维护, 线段树维护数字等差数列能延续到的最右端。
阅读全文
摘要:感觉分情况讨论清楚就好啦, 不是很难写。
阅读全文
摘要:Functions On The Segments 考虑处理出所有x <= 2e5的答案。 用主席树去维护, 每个 x 的值, 因为是单点询问所以可以差分, 不用打标记。 一个PLL 打成了 PII, 找了半天bug。
阅读全文
摘要:Almost Increasing Array 来讲讲自己想到的和没想到的。。 首先要把严格递增变成非严格递增每个元素只要减去所处位置的下标。 然后我们考虑枚举被删除的点, 被删点前面的每个元素减去 i , 被删的每个点后面的元素减去 (i - 1) 然后求LIS, 在所有的LIS里面的最大值, 这
阅读全文