这道题起初看错题意,询问的是在区间L,R内在l,r内的每个数值出现次数的平方的和,没注意到平方,就想到了一个带前缀和的思路。假如原本分T块,其实我们只需要预处理T个前缀就好了,每一个前缀,单独处理一个数组,再保存一个关于权值出现次数的前缀,每次查询L,R,进行分块,一个连续的块的答案可以通过前缀求得 ...
分类:
其他好文 时间:
2019-01-15 10:42:43
阅读次数:
177
题面 传送门: [洛咕][1] [SPOJ][2] Solution 这题的想法挺妙的。 . 首先,对于这种区间求答案的问题,我们一般都可以通过类似前缀和的思想一减来消去a, 即求[a,b]的答案可以转化为求[1,b] [1,a 1] 接下来我们可以先考虑一下每个物品数量不限制的做法。我们可以把这个 ...
分类:
其他好文 时间:
2019-01-14 20:07:49
阅读次数:
202
"传送门" 既然每一次选择出来的都是一个子段,不难想到前缀和计算~~(然而我没有想到……)~~ 设异或前缀和为$x_i$,假设我们选出来的子段为$[1,i_1],(i_1,i_2],...,(i_{k 1},N]$,那么我们选择出来的子段的异或和为$x_{i_1} , x_{i_2}\ xor\ x ...
分类:
其他好文 时间:
2019-01-14 14:30:24
阅读次数:
218
大意是已知权值,求分成若干组每组和大于等于0的方案数. 模拟一下,显然有一个n^3的转移. 然后发现显然有一个n可以利用前缀和省掉,40分到手. 然后考虑这个过程:ans[i]=当前sum小于等于sum[i]的权值ans加一块.这个过程是可以上树状数组的.sum[]可能范围过大,只需要三行离散化. ...
分类:
其他好文 时间:
2019-01-14 11:06:14
阅读次数:
222
主要解决的问题 对于n个数,有修改和查询操作 单点修改区间查询(对于第i个数增加或减少一个值,然后求一个区间的值,这个区间也可以是一个点) 区间修改单点查询 (对于一个区间都增加或减少一个值,然后求一个点的值,这类题我们让每个点先记录的是和前面值的差,那么一个点的前缀和就是这个点的值,对于修改一个区 ...
分类:
编程语言 时间:
2019-01-13 18:02:40
阅读次数:
149
请你维护一个序列,支持两种操作: (1)某个区间 [x, y] 内的数同时加上一个增量 k。 (2)询问某一个区间 [x, y] 中从 1 开始的最大前缀和。 ...
分类:
其他好文 时间:
2019-01-13 15:01:06
阅读次数:
254
整除分块,一般形式:$\sum_{i = 1}^n \lfloor \frac{n}{i} \rfloor * f(i)$。需要一种高效求得函数 $f(i)$ 的前缀和的方法,比如等差等比数列求和或对于积性函数的筛法等,然后就可以用整除分块的思想做。 ...
分类:
其他好文 时间:
2019-01-13 11:00:01
阅读次数:
189
CodeForces - 617E 给n个数, m个询问, 每次询问问你[l, r]区间内有多少对(i, j), 使得a[i]^a[i+1]^......^a[j]结果为k。(注意 i ! = j)维护一个前缀异或值就可以了。要注意的是 区间[l, r], 我们需要将pre[l-1]......pr ...
分类:
其他好文 时间:
2019-01-13 01:59:36
阅读次数:
120
这道题注意矩形的交集还是矩形,所以求交集搞出一个类似于前缀和后缀和的东西,从头到位暴力,只要满足出去当前矩形的其余n-1个的交集满足左下角小于等于右下角就可以啦 ...
分类:
其他好文 时间:
2019-01-11 21:19:46
阅读次数:
176