随笔分类 -  树状数组

摘要:一道好题。 考虑拆分询问,对于经过LCA的出现位置,可以把前链和后链接近LCA部分的slen-1个字符直接取出进行KMP计算,复杂度O(sigema S) 那么现在就要计算树上一条上至下的链形成的串中,询问串出现了多少次(前链是下至上的,把询问串反过来即可) 考虑把这样的询问拆分成两条根到点的链,离 阅读全文
posted @ 2019-08-03 10:49 AKCqhzdy 阅读(325) 评论(0) 推荐(0) 编辑
摘要:被肉老师d得血肉模糊 上午自己yy了一发dfs序+树状数组+cdq,结果发现自己子树里面的情况是处理不了的...(orz claris KDT踩过 正解就是整体二分,然后每次像扫描线一样扫过,就能解决时间问题啦 主要的问题是判断是否有一条路径不经过当前点 转化成判断是否所有路径都经过当前点,我们进行 阅读全文
posted @ 2018-12-24 21:59 AKCqhzdy 阅读(200) 评论(0) 推荐(0) 编辑
摘要:明显是要上DP的。虽然我只能想出5个for起步。。。然后云里雾里瞎搞搞不知道乱搞成什么样 反正枚举到那个玉米那一维可以省掉,然后就一个操作数一个高度,看看范围可以用二维树状数组优化下 就是令f[i][j]表示到了当前操作了i次最高位为j最多保留的玉米,这个可以直接扔到树状数组里面 弄一个辅助数组更新 阅读全文
posted @ 2018-12-24 19:23 AKCqhzdy 阅读(155) 评论(0) 推荐(0) 编辑
摘要:总的来讲,SAM难想,SA难写,SAM跑得快 SAM: 这题其实巨像bzoj2780 建了广义SAM以后,用dfs序+树状数组求出每个点在多少不同的串里面 然后枚举每个串在上面跑就行了。 SA: 然后如果要上后缀数组的话,把它们接在一起弄,中间插不同的乱七八糟的符号,先套路一手st表求LCP 对于每 阅读全文
posted @ 2018-12-23 18:57 AKCqhzdy 阅读(258) 评论(0) 推荐(0) 编辑
摘要:建完sam以后自然而然的就是建后缀树了。 问题转化成多次询问一棵树(fail树)的子树中有多少不同颜色的节点。 等于一个序列的一段有多少种不同的颜色 这是个套路题,离线dfs序+树状数组可解(为什么我看了这么久愣是没看出来呢....) 多次询问一棵树(fail树)的子树中有多少不同颜色的节点。 == 阅读全文
posted @ 2018-12-04 16:28 AKCqhzdy 阅读(269) 评论(0) 推荐(0) 编辑
摘要:画一下柿子就知道是求区间乘积乘区间内所有质因数的(p-1)/p(就是求欧拉的公式嘛) 看上去莫队就很靠谱然而时间O(nsqrt(n)logn)并不资瓷 还是离线,确定右端点,对于1~i的区间内的质因数我们在树状数组把他们插入到最后一次出现的位置,然后扫一次求逆元+找质因数O(nlog^2n) 注意算 阅读全文
posted @ 2018-11-01 08:44 AKCqhzdy 阅读(228) 评论(0) 推荐(0) 编辑
摘要:首先我们很容易看出是一个DP 然后容易看出是数据结构优化DP 但是这个限制条件有点鬼畜: abs(p[i]-p[j])/2<=(t[i]-t[j]) p[i]>p[j] -> t[i]*2-p[i]>=t[j]*2-p[j] p[i]<p[j] -> t[i]*2+p[i]>=t[j]*2+p[j] 阅读全文
posted @ 2018-09-30 09:52 AKCqhzdy 阅读(126) 评论(0) 推荐(0) 编辑
摘要:为啥我考虑了DP考虑了cdq就没考虑考虑两个合起来哩 这个题首先一看就很乱搞。。。 容易想到自己的值减去下标。。。 那么当前位置DP的话能继承什么呢? 首先位置要在自己前面,然后值要比自己小,还有,因为它前面的积木被推了它受影响我也受影响,我们之间的积木被推了我受影响它没事,所以它距离正确位置的距离 阅读全文
posted @ 2018-08-31 09:55 AKCqhzdy 阅读(163) 评论(0) 推荐(0) 编辑
摘要:树状数组找第k大 倒着来,取了的排名就去掉。 阅读全文
posted @ 2018-08-06 16:40 AKCqhzdy 阅读(103) 评论(0) 推荐(0) 编辑
摘要:又是一道玄学乱搞 本来我感觉是写两颗splay然后翻转什么的,后来发现可以乱搞 就是把第一个栈反过来,两个栈拼起来, 然后记录一个分割点,从大到小模拟,移动分割点,中间的经过的没被删除的元素就用树状数组维护下 阅读全文
posted @ 2018-06-26 13:36 AKCqhzdy 阅读(133) 评论(0) 推荐(0) 编辑
摘要:比较玄幻的题目。 考虑两个不同的元素 假设位置是 a...a...b...b... 那么不需要通过交换ab来消除ab,各自弄就行 若是 a...b...b...a... 那也没必要交换,先把b消掉就好 假如是 a...b...a...b... 那么需要交换一次 用树状数组维护一下 阅读全文
posted @ 2018-06-23 16:01 AKCqhzdy 阅读(100) 评论(0) 推荐(0) 编辑
摘要:一个自以为很对的东西,我们往-1放的数肯定是不增的。 然后就预处理一下,假如i这个位置放j会多多少逆序对。 DP一下,我的复杂度应该是O(n*m^2)的,然而你随便搞都能省掉一个m吧,我算了算好像可以过就不管了。 注意树状数组的时候getsum是a[i]-1,相同是不算逆序对的 阅读全文
posted @ 2018-05-15 13:24 AKCqhzdy 阅读(117) 评论(0) 推荐(0) 编辑
摘要:诶这这这这怎么又是树状数组和逆序对(快要被虐哭了55555) 强行分块。。。 我们先开block个权值树状数组,把每个块的值插进去,块里面的直接算,外面的靠树状数组 if sum ++ -- 好烦。。 然而对拍是个好东西。 阅读全文
posted @ 2018-04-18 21:19 AKCqhzdy 阅读(103) 评论(0) 推荐(0) 编辑
摘要:又是调成sb的题啊。。。 下午三个多小时就交代给这两题代码还短得要死的题 一眼就是离散化,树状数组&&逆序对 然后又是搞了个WA的做法,枚举分界点 正解要贪心。(不用离散化。。。) 排序后判断当前分在左边和右边 看下那边逆序对少放那边 一个经常用到的结论:我们给原数组标上下表1...n,移动若干次后 阅读全文
posted @ 2018-04-18 17:18 AKCqhzdy 阅读(216) 评论(0) 推荐(0) 编辑
摘要:折腾我一中午。。 做法就是树状数组维护中位数。。 阅读全文
posted @ 2018-04-16 13:59 AKCqhzdy 阅读(145) 评论(0) 推荐(0) 编辑
摘要:恩这题岂不是裸的莫队? 看下范围上西天。。。 其实和之前一道关于看电影的题很像这里就不赘述了。只不过这里用了树状数组。 阅读全文
posted @ 2018-04-12 15:37 AKCqhzdy 阅读(108) 评论(0) 推荐(0) 编辑
摘要:早上听见一大群疯子说什么树状数组上二分的乱七八糟东西 简化一下题意这题就是在牌堆里找第k张牌嘛 树状数组找第k大 阅读全文
posted @ 2018-04-11 15:31 AKCqhzdy 阅读(88) 评论(0) 推荐(0) 编辑
摘要:可以说也是很迷了。最近写的字符串的题都很迷。。 首先看到路牌先写板子AC机,然后迷 然后??? 回忆一下fail的定义:fail[i]到根形成的字符串是i到根形成的字符串的后缀。 那么大力跳fail硬搞 那么题目询问就变成了求在第y个字符串的那条路径上,有多少个节点fail指向的是第x个字符串的最后 阅读全文
posted @ 2018-03-31 09:59 AKCqhzdy 阅读(170) 评论(0) 推荐(0) 编辑
摘要:用splay离线弄好顺序。 然后树状数组(分治也行吧) 看错题Wa了。。。是当前所有最大值不是包含插入这个数字子序列的最大值。 阅读全文
posted @ 2018-03-10 15:59 AKCqhzdy 阅读(168) 评论(0) 推荐(0) 编辑
摘要:dfs序+差分+树状数组。这题很简单。 但是要注意dfs新编号的问题。 阅读全文
posted @ 2018-03-07 13:59 AKCqhzdy 阅读(121) 评论(0) 推荐(0) 编辑