题意
给定一个长度为 n n n的 01 01 01串 s s s(下标从1开始),定义 f ( l , r ) f(l,r) f(l,r)为串 s l s l + 1 … s r − 1 s r s_ls_{l+1}\dots s_{r-1}s_r slsl+1…sr−1sr的子串中,满足1的个数为奇数的串的个数。求 ∑ i = 1 n ∑ j = i n f ( i , j ) \sum\limits_{i=1}^n\sum\limits_{j=i}^nf(i,j) i=1∑nj=i∑nf(i,j)。
思路
先考虑
f
(
1
,
n
)
f(1,n)
f(1,n)如何求。令
t
i
=
s
1
x
o
r
s
2
…
s
i
t_i=s_1\ xor\ s_2\dots s_i
ti=s1 xor s2…si。(
s
i
s_i
si是指字符
s
i
s_i
si对应数字,
t
i
t_i
ti同样,以下亦是如此)特别地令
t
0
=
0
t_0=0
t0=0。则
f
(
1
,
n
)
f(1,n)
f(1,n)变为找满足
t
i
≠
t
j
(
0
≤
i
<
j
≤
n
)
t_i\neq t_j(0 \leq i < j \leq n)
ti=tj(0≤i<j≤n)的二元组
(
i
,
j
)
(i,j)
(i,j)个数,
t
i
≠
t
j
t_i\neq t_j
ti=tj等价与
t
i
=
t
j
x
o
r
1
t_i=t_j\ xor\ 1
ti=tj xor 1。
易得递推关系
f
(
1
,
n
+
1
)
=
f
(
1
,
n
)
+
∑
j
=
0
n
[
t
j
=
t
n
+
1
x
o
r
1
]
f(1,n+1)=f(1,n)+\sum\limits_{j=0}^n[t_j=t_{n+1}\ xor\ 1]
f(1,n+1)=f(1,n)+j=0∑n[tj=tn+1 xor 1];
设
p
r
e
(
n
,
n
u
m
)
=
∑
i
=
0
n
[
t
i
=
n
u
m
]
pre(n,num)=\sum\limits_{i=0}^n[t_i=num]
pre(n,num)=i=0∑n[ti=num],特别地
p
r
e
(
−
1
,
0
)
=
p
r
e
(
−
1
,
1
)
=
0
pre(-1,0)=pre(-1,1)=0
pre(−1,0)=pre(−1,1)=0;
则
f
(
1
,
n
+
1
)
=
f
(
1
,
n
)
+
p
r
e
(
n
,
t
n
+
1
x
o
r
1
)
f(1,n+1)=f(1,n)+pre(n,t_{n+1}\ xor\ 1)
f(1,n+1)=f(1,n)+pre(n,tn+1 xor 1);
推广到一般情况
f
(
l
,
r
+
1
)
=
f
(
l
,
r
)
+
∑
i
=
l
−
1
r
[
t
i
=
t
r
+
1
x
o
r
1
]
=
f
(
l
,
r
)
+
p
r
e
(
r
,
t
r
+
1
x
o
r
1
)
−
p
r
e
(
l
−
2
,
t
r
+
1
x
o
r
1
)
\begin{aligned} f(l,r+1)&=f(l,r)+\sum\limits_{i=l-1}^r[t_i=t_{r+1}\ xor\ 1] \\ &= f(l,r)+pre(r,t_{r+1}\ xor\ 1)-pre(l-2,t_{r+1}\ xor\ 1) \end{aligned}
f(l,r+1)=f(l,r)+i=l−1∑r[ti=tr+1 xor 1]=f(l,r)+pre(r,tr+1 xor 1)−pre(l−2,tr+1 xor 1)
设
g
n
=
∑
i
=
1
n
f
(
i
,
n
)
g_n=\sum\limits_{i=1}^nf(i,n)
gn=i=1∑nf(i,n)
根据
f
(
l
,
r
)
f(l,r)
f(l,r)递推关系可得
g
n
+
1
=
∑
i
=
1
n
+
1
f
(
i
,
n
+
1
)
=
∑
i
=
1
n
(
f
(
i
,
n
)
+
p
r
e
(
n
,
t
n
+
1
x
o
r
1
)
−
p
r
e
(
i
−
2
,
t
n
+
1
x
o
r
1
)
)
+
t
r
+
1
=
g
n
+
n
∗
p
r
e
(
n
,
t
n
+
1
x
o
r
1
)
−
∑
i
=
−
1
n
−
2
p
r
e
(
i
,
t
n
+
1
x
o
r
1
)
+
t
r
+
1
\begin{aligned} g_{n+1}&=\sum\limits_{i=1}^{n+1}f(i,n+1) \\ &=\sum\limits_{i=1}^{n}(f(i,n)+pre(n,t_{n+1}\ xor\ 1)-pre(i-2,t_{n+1}\ xor\ 1))+t_{r+1}\\ &=g_{n}+n*pre(n,t_{n+1}\ xor\ 1)-\sum\limits_{i=-1}^{n-2}pre(i,t_{n+1}\ xor\ 1)+t_{r+1} \end{aligned}
gn+1=i=1∑n+1f(i,n+1)=i=1∑n(f(i,n)+pre(n,tn+1 xor 1)−pre(i−2,tn+1 xor 1))+tr+1=gn+n∗pre(n,tn+1 xor 1)−i=−1∑n−2pre(i,tn+1 xor 1)+tr+1
由于
p
r
e
(
−
1
,
0
)
=
p
r
e
(
−
1
,
1
)
=
0
pre(-1,0)=pre(-1,1)=0
pre(−1,0)=pre(−1,1)=0,所以
g
n
+
1
=
g
n
+
n
∗
p
r
e
(
n
,
t
n
+
1
x
o
r
1
)
−
∑
i
=
0
n
−
2
p
r
e
(
i
,
t
n
+
1
x
o
r
1
)
+
t
n
+
1
g_{n+1}=g_{n}+n*pre(n,t_{n+1}\ xor\ 1)-\sum\limits_{i=0}^{n-2}pre(i,t_{n+1}\ xor\ 1)+t_{n+1}
gn+1=gn+n∗pre(n,tn+1 xor 1)−i=0∑n−2pre(i,tn+1 xor 1)+tn+1
设
p
p
r
e
(
n
,
n
u
m
)
=
∑
i
=
0
n
p
r
e
(
i
,
n
u
m
)
ppre(n,num)=\sum\limits_{i=0}^{n}pre(i,num)
ppre(n,num)=i=0∑npre(i,num);
则
g
n
+
1
=
g
n
+
n
∗
p
r
e
(
n
,
t
n
+
1
x
o
r
1
)
−
p
p
r
e
(
n
−
2
,
t
n
+
1
x
o
r
1
)
+
t
n
+
1
g_{n+1}=g_n+n*pre(n,t_{n+1}\ xor\ 1)-ppre(n-2,t_{n+1}\ xor\ 1)+t_{n+1}
gn+1=gn+n∗pre(n,tn+1 xor 1)−ppre(n−2,tn+1 xor 1)+tn+1;
而
p
r
e
(
n
+
1
,
n
u
m
)
=
p
r
e
(
n
,
n
u
m
)
+
[
t
n
+
1
=
n
u
m
]
pre(n+1,num)=pre(n,num)+[t_{n+1}=num]
pre(n+1,num)=pre(n,num)+[tn+1=num];
p
p
r
e
(
n
+
1
,
n
u
m
)
=
p
p
r
e
(
n
,
n
u
m
)
+
p
r
e
(
n
+
1
,
n
u
m
)
ppre(n+1,num)=ppre(n,num)+pre(n+1,num)
ppre(n+1,num)=ppre(n,num)+pre(n+1,num);
可以
O
(
n
)
O(n)
O(n)递推得到
p
r
e
,
p
p
r
e
,
g
pre,ppre,g
pre,ppre,g。
最后
a
n
s
=
∑
i
=
1
n
g
i
ans=\sum\limits_{i=1}^ng_i
ans=i=1∑ngi。