随笔分类 - 数据结构->线段树
摘要:题解 我们冷静一下,先画一棵后缀树 然后发现我们要给c和d这一段区间在[a,b]这一段开头的串里找lcp 而lcp呢,就是c点的祖先的到根的一段,假如这个祖先的子树里有[a,b dis[u] + 1],那么这个u就是合法的,维护每个点子树里出现过的后缀串起点可以用线段树合并 (这里的深度指后缀树上该
        阅读全文
                
摘要:题解 看错题了,我以为是询问Q是个数字,问它在哪个位置 我一想这不直接01序列搞一下就好了嘛(事实上是012) 然后呢,我发现样例没过。 啊我看错题了,问的是Q这个位置是啥…… 哦,套用我之前的想法不是直接拿线段树维护01序列然后二分吗……(可以不用012,直接是0表示小于等于mid的值,1表示大于
        阅读全文
                
摘要:题解 一写过一交A的水题 只要求一个dfs序,新加一个标记在子树所在的区间上覆盖上该点,维护深度最大的答案 代码 cpp include define enter putchar('\n') define space putchar(' ') define pii pair define fi fi
        阅读全文
                
摘要:题解 维护区间内1的个数,左边数0的长度,右边数0的长度,区间内0区间最长个数,覆盖标记 第一种操作区间覆盖0 第二种操作查询$[l_0,r_0]$中1的个数,区间覆盖0,然后覆盖时找到相对应的区间时对于如果1够把这个区间覆盖掉的话就直接cover,否则就递归该区间,如果能覆盖左区间就覆盖去右区间否
        阅读全文
                
摘要:https://loj.ac/problem/2722 题解 考场上想了60分,但是由于自己不知道在怎么zz,我连那个ai出题人大毒瘤啊 从头到尾说一下部分分 前20给枚举链求链交的$n^2$暴力 再15分,似乎可以线段树,但是我归到S1的部分了 再15分c=0,可以枚举一个公共lca,求两个最小的
        阅读全文
                
摘要:https://www.hackerrank.com/challenges/how many substrings/problem 题解 似乎是被毒瘤澜澜放弃做T3的一道题(因为ASDFZ有很多人做过,当然,他换了一道更毒瘤的……) 仓鼠在最后一天的时候提了一嘴然后我发现依旧菜菜的不会……(因为太菜
        阅读全文
                
摘要:题解 加法没写取模然后gg了QwQ,de了半天 思想还是比较自然的,线段树合并的维护方法我是真的很少写,然后没想到 很显然,我们有个很愉快的想法是,对于每个节点枚举它所有的叶子节点,对于一个叶子节点的值为v,然后查询另一棵树小于v的概率和×该节点的p + 大于v的概率和 × 该节点的(1 p),作为
        阅读全文
                
摘要:题解 离线读入,我们发现一个矩形能被保护,矩形内部所有列上必定有一辆车,或者所有行上必定有一辆车 分两次进行处理 第一次按照横坐标把车加进去,然后查询最大横坐标在这个位置的矩形,纵坐标区间里的车出现位置的最小值有没有超过最小横坐标 第二次按照纵坐标把车加进去,然后查询最大纵坐标所在位置的矩形,横坐标
        阅读全文
                
摘要:题解 我们枚举右端点判断合法的左端点有哪些 首先,记录一下右端点右边的点的pre,也就是这个数字前一个出现的位置,取所有小于枚举右端点r的值中最大的一个做为l,用优先队列维护即可,[l + 1,r]就是可能取到的左端点的区间 然后我们对于每一种数字,最前一次出现的位置p,最后一次出现的位置q,覆盖[
        阅读全文
                
摘要:题解 一眼就是线段树维护点分树的dfs序嘛 代码debug一年(手动再见) 码力直线下降,坐等滚粗= = 很明显的我们需要一个点分树,然后求出以每个重心为根的树的dfs序,线段树维护一下每个点的价值 每个点到根的距离 对于修改点直接单点修改,对于边相当于修改了一个子树到根的距离,就是dfs序上一段区
        阅读全文
                
摘要:题解 看错题了,以为单次修改相当于一个覆盖,后来才明白“添加”…… 就相当于添加很多线段求最小值 首先这个等差数列添加的方式比较烦人,我们拆开两条链,一条s到lca,一条lca到t 那么s到lca上的点x值就是$ A dis[x] + A dis[s] + B$ lca到t上的点x值就是$A dis
        阅读全文
                
摘要:题解 我们发现只有从第一个往后数,用乘号联通的块是有贡献的 为什么,因为后面所有表达式 肯定会有 + ,还会有个 ,贡献全都被抵消了 所以我们处理出前缀乘积,然后乘上表达式的方案数 答案就是$\sum_{i = 1}^{n 1} S[i] 2 3^{n 1 i} + S[n]$ 设新值为v,旧值为u
        阅读全文
                
摘要:题解 我们可以根据点积的定义,垂直于原点到给定点构成的直线作一条直线,从正无穷往下平移,第一个碰到的点就是答案 像什么,上凸壳哇 可是……动态维护上凸壳? 我们可以离线,计算每个点能造成贡献的一个询问区间[l,r]表示这个点在第l个询问和第r个询问之间存在,按照每个点的横坐标大小顺序插入线段树,我们
        阅读全文
                
摘要:题解 当年LN还是有专门的省选题的,但是还不如没有 看到这道题,我就想到了一个清晰易懂,简单好写,代码优美的树链剖分线段树套主席树的$O(q\log^{3}n)$做法,且就5组数据出题人肯定是不会出题树剖卡不到上限…… 但是我太菜了,我并不想实现这个算法……然后看了看一个神奇的$O(n \log^{
        阅读全文
                
摘要:A number, N (1 <= N < 5000), of rectangular posters, photographs and other pictures of the same shape are pasted on a wall. Their sides are all vertic
        阅读全文
                
摘要:1036: [ZJOI2008]树的统计Count Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点
        阅读全文
                
 
                    
                
 浙公网安备 33010602011771号
浙公网安备 33010602011771号