差分数状数组

差分数状数组

用于区间加和区间查询,较线段树来讲更为简洁

之所以称之为差分数状数组,是因为其运用了差分的思想实现了区间加值。

首先考虑差分数组d:

d [ i ] = a [ i ] − a [ i − 1 ] d[i]=a[i]-a[i-1] d[i]=a[i]a[i1]

则对于a[x]有

a [ x ] = ∑ i = 1 x d [ i ] a[x]=\sum_{i=1}^xd[i] a[x]=i=1xd[i]

再设Sum数组为a数组的前缀和,则有

S u m [ x ] = ∑ i = 1 x a [ i ] Sum[x]=\sum{_{i=1}^x}a[i] Sum[x]=i=1xa[i]

带入对于d数组的定义,则有

S u m [ x ] = ∑ i = 1 x ∑ j = 1 i d [ j ] Sum[x]={\sum_{i=1}^x\sum_{j=1}^i}d[j] Sum[x]=i=1xj=1id[j]

根据上式可推出

S u m [ x ] = ∑ i = 1 x ( x − i + 1 ) × d [ i ] Sum[x]=\sum_{i=1}^x(x-i+1) \times d[i] Sum[x]=i=1x(xi+1)×d[i]

分离两侧有

S u m [ x ] = ( x + 1 ) × ∑ i = 1 x − ∑ i = 1 x i × d [ i ] Sum[x]=(x+1)\times\sum_{i=1}^x-\sum_{i=1}^x{i \times d[i]} Sum[x]=(x+1)×i=1xi=1xi×d[i]

综上针对区间和的维护,只需要维护两个差分数组的数状数组($ d[i] 、 、 i*d[i]$)即可。

#唯一分解定理

一个大于1的正整数N,若其标准分解式是

N = P 1 a 1 P 2 a 2 . . . P n a n N=P_1^{a_1}P_2^{a_2}...P_n^{a_n} N=P1a1P2a2...Pnan

则其正因数的个数是

δ 0 ( N ) = ( 1 + a 1 ) ( 1 + a 2 ) . . . ( 1 + a n ) ​ \delta_0(N)=(1+a_1)(1+a_2)...(1+a_n) ​ δ0(N)=(1+a1)(1+a2)...(1+an)

其全体正因数之和是

δ 1 ( N ) = ( 1 + p 1 + p 1 2 + … p 1 a 1 ) ( 1 + p 2 + p 2 2 + … p 2 a 2 ) . . . ( 1 + p n + p n 2 + … p n a n ) \delta_1(N)=(1+p_1+p_1^2+…p_1^{a_1})(1+p_2+p_2^2+…p_2^{a_2})...(1+p_n+p_n^2+…p_n^{a_n}) δ1(N)=(1+p1+p12+p1a1)(1+p2+p22+p2a2)...(1+pn+pn2+pnan)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值