首页 > TAG信息列表 > Preprefix

P4868 Preprefix sum

Aimee 首先可以知道对于任意一个\(a_i\),我们可以知道他的贡献在\([i,n]\) 那么对于每一次对于\(ss_k\)的查询,贡献是\((k-i+1)*a_i\) 分配一下,贡献是\(a_i*(k+1)+a_i\),分别计算这两个就可以了 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #define

P4868 Preprefix sum

\(\text{Description}\) 传送门 \(\text{Solution}\) 先看看一个简单的问题: 给定序列 \(a\),有单点修改,查询 \(s_i\)(\(s_i\) 是前缀和)。 这个问题应该有两种解决方法: 单点修改,再 \([1,i]\) 区间查询。 考虑每个点修改对前缀和的贡献,显然只会对 \([i,n]\) 有 \(val_{now}-val_{pa

P4868 Preprefix sum

传送门 挺显然的一题?单点修改,前缀和数组前缀查询 树状数组就可以维护了 考虑每个位置对应询问的贡献,设询问的位置为 $x$,对于原数组 $a[i]$ 的某个位置 $i$,它会贡献 $(x-i+1)*a[i]$ 即 $x*a[i]-(i-1)*a[i]$,直接对两个部分搞两个树状数组分别维护即可 具体就是搞个 $BIT_1$ 维护 $a[

BZOJ3155:Preprefix sum(线段树)

Description Input 第一行给出两个整数N,M。分别表示序列长度和操作个数 接下来一行有N个数,即给定的序列a1,a2,....an 接下来M行,每行对应一个操作,格式见题目描述 Output 对于每个询问操作,输出一行,表示所询问的SSi的值。 Sample Input 5 31 2 3 4 5Query 5Modify 3 2Query 5 Sam

Preprefix sum BZOJ 3155 树状数组

题目描述 前缀和(prefix sum)Si=∑k=1iaiS_i=\sum_{k=1}^i a_iSi​=∑k=1i​ai​。 前前缀和(preprefix sum) 则把SiS_iSi​作为原序列再进行前缀和。记再次求得前缀和第i个是SSiSS_iSSi​ 给一个长度n的序列a1,a2,⋯,ana_1, a_2, \cdots, a_na1​,a2​,⋯,an​,有两种操作: Modify