随笔分类 -  数据结构——树状数组

摘要:树状数组一个被发明以来广为流行的数据结构,基于数组,核心是lowerbit()操作。他向前lowerbit()操作为前缀,向后lowerbit()操作为上辖,我们运用树状数组都是使一个由O(1)变为O(log),一个由O(n)变为O(log),有两种类型一种是上辖修改前缀查询,典型的为前缀和,前缀最 阅读全文
posted @ 2017-09-26 17:02 TS_Hugh 阅读(426) 评论(0) 推荐(0)
摘要:就是考了一个fail树的神奇应用我们建出fail树之后,发现我们就是在求y到根的路径上所有的点在以x为根的子树里的个数,这个我们离线后用树状数组+dfs序即可解决 阅读全文
posted @ 2017-09-13 20:51 TS_Hugh 阅读(151) 评论(0) 推荐(0)
摘要:biubiu~~~ 这道题我一眼就以为是线段树优化dp并且有了清晰的思路但是发现,我不会线段树区间平移,我以为只是我不会,然而根本就不行........ 正解是把序列排出来然后我们让他们减去他们的下标之后求最长上升子序列。 阅读全文
posted @ 2017-08-13 19:48 TS_Hugh 阅读(430) 评论(0) 推荐(0)
摘要:这个dp乍看不科学,仔细一看更不科学,所以作为一个执着BOY,我决定要造数据卡死波兰人民,但是我造着造着就......证出来了......... 这个就是把 < > =分开讨论每次找到f[i] 即以i为结尾的最长长度,然后一顿转移,那么我们发现如果只是讨论 符号那么由于符号顺序影响 我们的得到的是一 阅读全文
posted @ 2017-07-27 21:45 TS_Hugh 阅读(333) 评论(0) 推荐(0)
摘要:我们用树状数组做差就可以解决一切问题,我用桶排并用此来表示出第几大就可以直接求前缀和了 阅读全文
posted @ 2017-07-26 21:19 TS_Hugh 阅读(288) 评论(0) 推荐(0)
摘要:我们只要看出来这道题 数组表示的含义就是 某个点到根节点路径权值和就行 那么我们可以把最终答案 看做 k*x+b x就是其深度 ,我们发现dfs序之后,修改一个点是差分一个区间,修改一个点的子树,可以看做对于子树中的每一个点进行 a*(deep[x]-deep[root]+1) root是子树根节点 阅读全文
posted @ 2017-07-26 20:47 TS_Hugh 阅读(420) 评论(0) 推荐(0)
摘要:水果~~~~ 关于四个while可行性的证明:区间有正确性所以不管那团小东西用没有duang~反它最终总会由于两次覆盖二准确 关于区间种数可行性的证明:他会在0 1间(或两边)来回跳动(过程中),最终会停在一个大于等于0的地方由于多次覆盖,最终也会趋于准确 阅读全文
posted @ 2017-06-21 16:14 TS_Hugh 阅读(276) 评论(0) 推荐(0)
摘要:这个用莫队做会被卡,但是我还是...... 收获在于树状数组维护后缀和以及双维排序...... 莫队的时间复杂度比想象中的要好一些.... 然而我还是被卡了...... 阅读全文
posted @ 2017-06-21 15:31 TS_Hugh 阅读(344) 评论(0) 推荐(0)