随笔分类 - 数据结构 -- 树状数组
摘要:题面传送门 题目大意:给你一个序列,多次询问,每次取出一段连续的子序列$[l,r]$,询问这段子序列的逆序对个数,强制在线 很熟悉的分块套路啊,和很多可持久化01Trie的题目类似,用分块预处理出贡献,而这道题是用可持久化线段树罢了 首先对序列分块,设块大小为$S$ 再建出主席树,我们就能在$O(l
阅读全文
摘要:题目大意:略 题目传送门 四维偏序板子题 把插入操作和询问操作抽象成$(x,y,z,t)$这样的四元组 询问操作拆分成八个询问容斥 此外$x,y,z$可能很大,需要离散 直接处理四维偏序很困难,考虑降维 而$t$这一维有一个神奇的性质,任意两个四元组的$t$互不相同,是最好处理的,所以尽量保证$t$
阅读全文
摘要:题目大意:略 洛谷传送门 这道题在洛谷上数据比较强 貌似这个题比较常见的写法是树状数组套主席树,动态修改 我写的是整体二分 一开始的序列全都视为插入 对于修改操作,把它拆分成插入和删除两个操作 像$CDQ$分治一样,用结构体记录操作的位置,修改的权值等 假设为需要处理的询问分配了一个答案$mid$
阅读全文
摘要:题目大意:略 洛谷传送门 多次询问第k小,考虑整体二分 考虑二分答案,为了避免同一权值的数出现在不同位置的情况,用一个$vector$存储权值为i的点在那些位置。而权值可能会很大,我们将其离散。 每次选择一个答案$mid$,把矩阵中权值为$[l,mid]$的点加入到二维树状数组中,即可在$O(log
阅读全文
摘要:题目大意:略 洛谷传送门 整体二分裸题 考虑只有一个国家的情况如何处理 对询问数量二分答案,暴力$O(m)$打差分,求前缀和验证,时间是$O(mlogK)$ 如果有$n$个国家,就是$O(nmlogK)$,非常不优秀的时间复杂度 发现我们对于每个国家都进行一次二分很浪费时间 考虑把国家分成一定数量的
阅读全文
摘要:题目大意: 洛谷传送门 这明明是一道KD-Tree,CDQ分治是TLE的做法 化简式子,$|x1-x2|-|y1-y2|=(x1+y1)-(x2+y2)$ 而$CDQ$分治只能解决$x1 \leq x2,y1 \leq y2$的情况 把每次插入操作都相当于一个三元组$<x,y,t>$,权值是$x+y
阅读全文
摘要:题目大意: 洛谷传送门 三维偏序裸题。。 每次操作都看成一个三元组$<x,y,t>$,表示$x,y$坐标和操作时间$t $ 询问操作拆成$4$个容斥 接下来就是$CDQ$了,外层按t排序,回溯时按$x$排序,用树状数组处理$y$这一维即可
阅读全文
摘要:题目大意:略 洛谷传送门 和 [CQOI2015]动态逆序对 这道题一样的思路 一开始的序列视为$n$次插入操作 把每次交换操作看成四次操作,删除$x$,删除$y$,加入$x$,加入$y$ 把每次操作都看成一个三元组 $<x,w,t>$ 操作位置,权值,以及操作时间 变成了一道三维偏序裸题 外层按操
阅读全文
摘要:题目大意: 题面传送门 还是一道三维偏序题 每次操作都可以看成这样一个三元组 $<x,w,t>$ ,操作的位置,权值,修改时间 一开始的序列看成n次插入操作 我们先求出不删除时的逆序对总数量,再统计每次删除元素时,减少的逆序对数量 然后就是三维偏序裸题了吧,第一维时间,第二维操作位置,第三维权值,用
阅读全文
摘要:题目大意: 题面传送门 三维偏序裸题 首先,把三元组关于$a_{i}$排序 然后开始$CDQ$分治,回溯后按$b_{i}$排序 现在要处理左侧对右侧的影响了,显然现在左侧三元组的$a_{i}$都小于等于右侧 而$c_{i}$这一维需要用权值树状数组维护 归并排序时,已知左侧右侧两个指针分别是$i,j
阅读全文
摘要:题目大意: 给你$n$个大串和$m$个询问,每次给出一个字符串$s$询问在多少个大串中出现过 好神的一道题 对$n$个大串建出广义$SAM$,建出$parent$树 把字符串$s$放到$SAM$里跑,找到能表示字符串$s$的节点$x$ 问题转化为在$parent$树中,$x$节点的子树内,有多少个编
阅读全文
摘要:题目大意: Alice有n个字符串S_1,S_2...S_n,Bob有一个字符串集合T,一开始集合是空的。 接下来会发生q个操作,操作有两种形式: “1 P”,Bob往自己的集合里添加了一个字符串P。 “2 x”,Alice询问Bob,集合T中有多少个字符串包含串S_x。(我们称串A包含串B,当且仅
阅读全文
摘要:题目大意:有一张$n*m$的数表,第$i$行第$j$列的数是同时能整除$i,j$的所有数之和,求数表内所有不大于A的数之和 先是看错题了...接着看对题了发现不会做了...刚了大半个下午无果 看了Po姐的题解(Orzzz)才搞懂这道题,搞清楚了莫比乌斯反演的两种经典的卷积形式的不同之处 令$\sig
阅读全文
摘要:题目大意:略(太长了不好描述) 良心LOJ传送门 先对所有被打印的字符串建一颗Trie树 观察数据范围,并不能每次打印都从头到尾暴力建树,而是每遍历到一个字符就在Trie上插入这个字符,然后记录每次打印后字符串最后一个字符在Trie树上的位置 然后建立AC自动机,再建立Fail树。注意还要另外存一下
阅读全文
摘要:题目大意:给你一个序列,求某区间出现不同的数的个数。 貌似离线树状数组是最好的解法 先把所有询问挂在它们询问的右端点上 然后从头到尾遍历这个序列,记录这个位置的值上一次出现的位置 那么,当遍历到第i位时,如果a[i]在之前出现过,就在它上一次出现的位置-1 这个操作的意义是,第i位已经有a[i]了,
阅读全文
摘要:题目大意:给你两个序列,你可以两个序列的点之间连边 要求:1.只能在点权差值不大于4的点之间连边 2.边和边不能相交 3.每个点只能连一次 设表示第一个序列进行到 i,第二个序列进行到 j,最多连的边数,容易得到方程: 不连边: 连边: 实际是这样的,每个位置如果想连边,就要从能连边的位置之前找最大
阅读全文
摘要:题目大意:给你两个序列,可以序列进行若干次旋转操作(两个都可以转),对两个序列相同权值的地方连边,求最少的交点数 记录某个值在第一个序列的位置,再记录第二个序列中某个值 在第一个序列出现的位置 ,求逆序对数量即可 本以为是一道逆序对水题,结果被卡了20分。看了题解才恍然大悟,实际上,序列可以旋转 ≠
阅读全文

浙公网安备 33010602011771号