
树状数组&线段树
cjk_cjk
这个作者很懒,什么都没留下…
展开
-
[NOI2011]阿狸的打字机(AC自动机+树状数组)
【题解】 KMP算法:每次询问时求出x串的失配函数,然后在y串上匹配,总复杂度O(m*len) 可以得40分 如果把所有单词建成一棵字母树,考虑类似的暴力: 对每次询问,枚举y串的每个点(将这个点理解为x在y串上的最后一个匹配点),若从它沿失配指针到root的路径经过x串的最后一个点,则答案加1 由于(x1,y),(x2,y),…这些y相同的询问在AC自动机上走的路径一样,可以对于y原创 2015-03-16 00:57:03 · 1208 阅读 · 0 评论 -
BZOJ2819 Nim(dfs序+树状数组)
【题解】 题目大意: 给定一棵树,有两种操作: 1. 修改一个节点的权值 2. 查询两点之间路径上所有点的权值异或值 运用前缀的思想 首先xor运算有一个性质:Xor[l,r]=Xor[1,l]^Xor[1,r] 所以,设 Xor[x]为从结点x到根经过的所有结点的权值异或, 则 x到y路径上的点权异或值为:Xor[x] ^ Xor[y] ^ Val[LCA(x,y)]原创 2015-06-17 23:10:30 · 637 阅读 · 0 评论 -
BZOJ3211 花神游历各国(树状数组+并查集)
【题解】 查询很容易做到O(logN) 修改时注意: 第i位上的数a[i] -> sqrt(a[i]),最多执行30次,当a[i]==1后,可以不修改,直接跳过 跳到之后第一个大于1的位置上去,这个位置可以用并查集维护 由于每个点最被修改30次,修改的总复杂度为O(300*N) 注意分析题目中修改操作的性质 注意两个小优化:1. fa[n+1]=n+1原创 2015-06-18 02:35:02 · 594 阅读 · 0 评论 -
BZOJ2957 楼房重建(线段树)
【题解】 题目描述有误,一栋楼房可见,应满足其最高点到(0,0)的连线不与其他楼房相交 这个条件可以等价为:它的斜率比之前的任何一个都大(相等也不行) 因此,只需O(logN)修改、O(logN)求出区间[1,n]内 比之前的任何一个数都大 的数有多少个 能使用线段树的条件是:两个子问题可以合并 本题中,记cntv[o]为:仅考虑o所代表的区间,有多少满足条件的数 那么首先原创 2015-06-21 15:17:21 · 1946 阅读 · 0 评论 -
[NOI2007]项链工厂(线段树)
【题解】 仔细探索题目性质: 1. "段数"具有类似结合律的性质,可以用线段树维护,断环为链,但线段树不易进行旋转、翻转操作 2. 考虑用函数记录从初始到当前操作的变换方式,将对数列的变换转化为对询问的处理 发现:若函数 f(x)=k*x+b表示询问的位置x对应的初始位置,则旋转a之后,函数为:f(x)=k*(x-a)+b; 翻转之后为:f(x)=k*(n+2-x)+b 3.原创 2015-06-20 16:38:17 · 601 阅读 · 0 评论 -
BZOJ3192 [JLOI2013]删除物品(树状数组)
【题解】 将两堆物品拼接到一起,物品的移动次数等价于中间的"断点"的移动距离之和 通过排序预处理出每次删除后的下一个该删除的位置 每个物品代表一条长度为1的线段,该物品删除后,线段长度改为0 然后两点之间的距离就转化为了区间和,用树状数组维护即可 【代码】 #include #include typedef long long LL; int a[100005],b原创 2015-06-20 16:05:56 · 639 阅读 · 0 评论 -
BZOJ1145 [CTSC2008]图腾totem(数学计数+树状数组)
【题解】 拜读了不少网上题解,现在自己来复述一遍 设 f(abcd)为:当选出的四个数相对大小关系为abcd时,有多少种选择方式 则 ans = f(1324) - f(1243) -f(1432) 用拆分法简此问题 f(1324) = f(1x2x) - f(1423) f(1243) = f(12xx) - f(1234) f(1432) = f(14xx) -原创 2015-06-20 16:10:06 · 997 阅读 · 0 评论 -
BZOJ1452 [JSOI2009]Count(二维树状数组)
建立n(color)个二维树状数组即可 #include #include int map[305][305],c[105][305][305]; int n,m; void xg(int color,int p,int x,int y) { int i,j; for(i=x;i<=n;i+=i&(-i)) for(j=y;j<=m;j+=j&(-j)) c[color]原创 2015-05-20 02:08:18 · 560 阅读 · 0 评论