首页 > TAG信息列表 > P4868

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

题目链接 本题与我的树状数组进阶有类似之处,基本上思路完全一样 我们对\(SS[i]\)进行分析 \[ S[i]=\sum_{k=1}^{i} A[k] \] \[ SS[i]=\sum_{k=1}^{i} S[k] \] \[ SS[i]=\sum_{k=1}^{i} \sum_{j=1}^{k} A[j] \] \[ SS[i]=(i+1) * \sum_{k=1}^{i} A[k] - \sum_{k=1}^{i} A[k] * k

P4868 Preprefix sum

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