随笔分类 - 数据结构-线段树
摘要:"http://codeforces.com/gym/100739/problem/A" 按位考虑,每一位建一个线段树。 求出前缀xor和,对前缀xor和建线段树。 线段树上维护区间内的0的个数和1的个数。 修改就修改p到最后的区间,进行区间取反。 回答询问时把总区间内0的个数和1的个数相乘即可。
阅读全文
摘要:"http://uoj.ac/problem/112" 先扣掉在同一侧的情况。 当$k=1$时,桥建在所有位置的中位数。 当$k=2$时,对于每个居民$(S_i,T_i)$,这个居民只会走离$\frac{S_i+T_i}2$最近的桥,那么对所有$\frac{S_i+T_i}2$排序,最优方案一定满足
阅读全文
摘要:Day 1 T1 数字表格 题目大意 · 求$\prod\limits_{i=1}^n\prod\limits_{j=1}^mFibonacci(\gcd(i,j))$,$T\leq1000$,$n,m\leq10^6$ 思路 · 一言不合化式子(不失一般性地假设$n include include
阅读全文
摘要:"http://www.lydsy.com/JudgeOnline/problem.php?id=2212" 自下而上贪心。 需要用权值线段树来记录一个权值区间内的出现次数。 合并线段树时统计逆序对的信息就可以了。 时间复杂度$O(n\log n)$。 c++ include include inc
阅读全文
摘要:"http://www.lydsy.com/JudgeOnline/problem.php?id=2646" 夏令营alpq654321讲课时说这道题很简单但并没有几个人提交,最近想复习一下线段树,脑袋一热就开始写这道题。。。 询问$[i,j]$内的抛物线在$[l,r]$上的最大值,最大值只会出现在
阅读全文
摘要:"http://www.lydsy.com/JudgeOnline/problem.php?id=1018" 线段树维护连通性。 把每一列看成一个节点,对于线段树上的每一个节点,维护8个信息,前6个字面意思很好理解,sd0和sd1分别代表这个节点所代表的列区间的最右端再往右的第1/2行是否有道路连出
阅读全文
摘要:"http://uoj.ac/problem/198" (先补一下以前的题解) 这道题5分暴力好写好调,链上部分分可以用可持久化线段树,每次旅行$x$值相同的可以用标记永久化线段树。我还听到某些神犇说可以用KD Treebalabalabala。 很显然$y,z$坐标都没用。然后。。。 在一个时空中
阅读全文
摘要:"http://www.lydsy.com/JudgeOnline/problem.php?id=2124" "http://codevs.cn/problem/1283/" 重点是把判断是否存在3个数组成等差数列变为对于一个数x快速判断x+d和x d是否在x的左右两侧。 如果在x左侧,设为1,在x
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=3242 http://uoj.ac/problem/126 http://codevs.cn/problem/3047/ 因为存在一条边,答案所在的点走向左右的城的最短路都不会经过这条边。 所以枚举这条
阅读全文
摘要:http://poj.org/problem?id=2482 线段树扫描线
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=4636 DCrusher贡献的题目 看了他的博客,有两种做法,动态开点线段树和离线操作离散化区间线段树,都是标记永久化,最后统一下放标记算出答案。 动态开点线段树速度更快,但是今天李佳蔚讲了stl的用法
阅读全文
摘要:离散化后扫描线扫一遍。 夏令营时gty学长就讲过扫描线,可惜当时too naive,知道现在才写出模板题。 当时也不会线段树啊233 poj上用G++交WA的生活不能自理QAQ,用C++交题大法好~
阅读全文
摘要:这道题很简单的连剖+分类讨论,但是SDOI Round2要来了,不会手动栈怎么办呢?只好用一下这道题练习一下手动栈了,结果调了一天多QwQ 链剖的第一个dfs用bfs水过就行,但是我自以为是地把倍增写错了,坑了好久啊QAQ 这道题因为要询问子树,连剖的第二个dfs就不能再用bfs水过了,只能强行手动
阅读全文
摘要:考场上写了lct,可惜当时对标记永久化的理解并不是十分深刻,导致调一个错误的程序调了4h+,最后这道题爆0了QwQ 现在写了树链剖分,用标记永久化的线段树维护轻重链,对于$s\rightarrow lca$,$lca\rightarrow t$分开讨论,把$a×dist+b$这个式子打开,提出常数项
阅读全文
摘要:往区间上覆盖一次函数,做法是用线段树维护标记永久化。 每次都忘了线段树要4倍空间,第一次交总是RE,再这么手残的话考场上就真的要犯逗了。 QwQ
阅读全文
摘要:经典的splay维护凸壳,但是看了看zky学长的题解最后决定写线段树维护标记永久化。 Round1考到了这个之后一直没有理解标记永久化,CTSC也因为自己的缺陷丢掉了一些部分分,so sad 看来以后不懂的东西要及时学啊QwQ Round2加油吧ovo
阅读全文
摘要:因为有$10^5$个宗教,需要开$10^5$个线段树。 平时开的线段树是“满”二叉树,但在这个题中代表一个宗教的线段树管辖的区间有很多点都不属于这个宗教,也就不用“把枝叶伸到这个点上”,所以这样用类似主席树的数组动态开点来建立$10^5$个只有几个“树枝”的线段树,维护轻重链就可以了 线段树的$L,
阅读全文
摘要:线段树维护4个标记, 昨天互测时题意理解错了,今天上午才发现。 4个标记维护区间内奶牛个数,左端最长连续空位,右端最长连续空位,区间内最长连续空位,然后就没了。
阅读全文
摘要:最后还是去掉异或顺手A了3673,,, 并查集其实就是fa数组,我们只需要维护这个fa数组,用可持久化线段树就行啦 1:判断是否属于同一集合,我加了路径压缩。 2:直接把跟的值指向root[k]的值破之。 3:输出判断即可。 难者不会,会者不难,1h前我还在膜这道题,现在吗hhh就当支持下zky学长
阅读全文
摘要:达神题解传送门:http://blog.csdn.net/dad3zz/article/details/50638360 说一下我对这个模板的理解: 看到这个方法很容易不知所措,因为动态K值需要套树状数组,而我一开始根本不知道该怎么套,, 学习吧,,, 然后我自己脑补如果不套会如何?后来想到是查询O
阅读全文