2021.3.20省选模拟
t1 推出了一个
n
2
d
p
n^2dp
n2dp,本来想用递推关系之间的系数关系来优化,结果发现求它们的系数关系复杂度极高就放弃了
t2 暴力+k=2
t3 忘记了
b
u
r
n
s
i
d
e
burnside
burnside定理
l
=
1
∣
G
∣
∑
c
(
a
i
)
l= \frac{1}{|G|}\sum c(a_i)
l=∣G∣1∑c(ai)
2021.4.1省选模拟
t1 先将所有
a
i
a_i
ai插入
01
t
r
i
e
01trie
01trie树,设
f
[
p
]
f[p]
f[p]为
p
p
p结点及其子树的答案,如果
x
x
x在
p
p
p这位上为
0
0
0,显然
f
[
p
]
=
f
[
l
s
]
⋅
f
[
r
s
]
f[p]=f[ls]\cdot f[rs]
f[p]=f[ls]⋅f[rs],否则在
p
p
p子树内最多只能选择
2
2
2个数,暴力
d
f
s
dfs
dfs下去即可,暴力时间复杂度感觉不太对
t2
令
c
(
l
)
c(l)
c(l)表示最大长度等于
l
l
l的方案数,则答案等于
∑
i
=
x
+
1
n
c
(
l
)
⋅
(
i
−
x
)
\sum_{i=x+1}^nc(l)\cdot (i-x)
∑i=x+1nc(l)⋅(i−x),直接等于很难算,考虑求出小于等于
l
l
l的,然后差分
设
f
i
f_i
fi表示满足最后一个元素与最后第二个元素颜色不同,且符合条件的序列的个数,容易得到转移
f
i
=
{
k
(
i
=
1
)
(
k
−
1
)
∑
j
=
1
min
(
l
,
i
−
1
)
f
i
−
j
(
i
≥
2
)
f_i=\begin{cases}{} k\ \ (i=1)\\(k-1)\sum_{j=1}^{\min (l,i-1)}f_{i-j}\ (i\ge 2)\end{cases}
fi={k (i=1)(k−1)∑j=1min(l,i−1)fi−j (i≥2)
注意答案应该为
f
[
n
+
1
]
/
(
k
−
1
)
f[n+1]/(k-1)
f[n+1]/(k−1),因为
f
f
f设的时候钦定了位置
1
1
1与位置
2
2
2上的数不同
令
s
i
=
∑
j
=
1
i
f
i
s_i=\sum_{j=1}^i f_i
si=∑j=1ifi,则
s
i
−
s
i
−
1
=
(
k
−
1
)
⋅
(
s
i
−
1
−
s
i
−
l
−
1
)
s_i-s_{i-1}=(k-1)\cdot(s_{i-1}-s_{i-l-1})
si−si−1=(k−1)⋅(si−1−si−l−1)
s
i
=
k
⋅
s
i
−
1
−
(
k
−
1
)
⋅
s
i
−
l
−
1
s_i=k\cdot s_{i-1}-(k-1)\cdot s_{i-l-1}
si=k⋅si−1−(k−1)⋅si−l−1
问题可以转化成一些点,第
i
i
i个点到第
i
+
1
i+1
i+1个点有
k
k
k种方案,第
i
i
i个点到第
i
+
l
+
1
i+l+1
i+l+1个点有
k
k
k种方案,求到第
n
n
n个点的方案数,枚举走多少次路径
2
2
2,组合数求解,时间复杂度
O
(
n
i
)
O(\frac{n}{i})
O(in)
总时间复杂度
O
(
∑
n
i
)
=
O
(
n
log
n
)
O(\sum\frac{n}{i})=O(n\log n)
O(∑in)=O(nlogn)
t3 还不太会,算法是凸优化
d
p
dp
dp+整体二分
2021.4.2省选模拟
t1 码农题,疯狂对拍跳了一个下午+一个晚上,建虚树,对于虚树上每个点,找到它跟它父亲之间路径的分界点,然后倍增求答案,对于答案在结点上的情况,先把每个结点的儿子按照子树最深的点的深度排序,然后从大到小查,最多查
k
k
k个,因为懒就没有写,所以就tle了5分
t2 极其潦草的题面,还不会
u
p
d
a
t
e
o
n
2021.4.6
update\ on\ 2021.4.6
update on 2021.4.6
f
(
n
)
=
∑
i
=
1
n
∑
j
=
1
n
μ
(
i
)
⋅
μ
(
j
)
⋅
[
gcd
(
i
,
j
)
=
1
]
f(n)=\sum_{i=1}^n\sum_{j=1}^n\mu(i)\cdot \mu(j)\cdot [\gcd(i,j)=1]
f(n)=i=1∑nj=1∑nμ(i)⋅μ(j)⋅[gcd(i,j)=1]
=
∑
i
=
1
n
μ
(
i
)
∑
j
=
1
n
μ
(
j
)
∑
d
∣
i
,
d
∣
j
μ
(
d
)
=\sum_{i=1}^n\mu(i)\sum_{j=1}^n\mu(j)\sum_{d|i,d|j}\mu(d)\ \ \
=i=1∑nμ(i)j=1∑nμ(j)d∣i,d∣j∑μ(d)
=
∑
d
=
1
n
μ
(
d
)
∑
d
∣
i
n
μ
(
i
)
∑
d
∣
j
n
μ
(
j
)
=\sum_{d=1}^n\mu(d)\sum_{d|i}^n\mu(i)\sum_{d|j}^n\mu(j)\ \ \ \
=d=1∑nμ(d)d∣i∑nμ(i)d∣j∑nμ(j)
=
∑
d
=
1
n
μ
(
d
)
(
∑
d
∣
i
n
μ
(
i
)
)
2
=\sum_{d=1}^n\mu(d)(\sum_{d|i}^n\mu(i))^2\ \ \ \ \ \ \ \ \ \ \ \ \ \
=d=1∑nμ(d)(d∣i∑nμ(i))2
考虑到要求出
f
(
i
)
,
i
∈
[
1
,
m
]
f(i),i\in[1,m]
f(i),i∈[1,m],若已求出
f
(
i
−
1
)
f(i-1)
f(i−1),那么到
f
(
i
)
f(i)
f(i)只会改变
i
i
i的约数个
∑
d
∣
i
n
μ
(
i
)
\sum_{d|i}^n\mu(i)
∑d∣inμ(i),枚举约数,增量求解,复杂度调和级数,枚举约数应记
p
[
i
]
p[i]
p[i]表示
i
i
i的最小约数,深搜枚举
g
(
n
)
=
∑
i
=
1
n
i
∑
j
=
1
n
j
⋅
[
gcd
(
i
,
j
)
=
1
]
g(n)=\sum_{i=1}^ni\sum_{j=1}^nj\cdot [\gcd(i,j)=1]
g(n)=i=1∑nij=1∑nj⋅[gcd(i,j)=1]
考虑到当
i
=
j
i=j
i=j时,只有
i
=
j
=
1
i=j=1
i=j=1时才会有
1
1
1的贡献,
i
i
i与
j
j
j又是同级的
=
2
∑
i
=
2
n
i
∑
j
=
1
i
j
⋅
[
gcd
(
i
,
j
)
=
1
]
+
1
=2\sum_{i=2}^ni\sum_{j=1}^ij\cdot [\gcd(i,j)=1]+1
=2i=2∑nij=1∑ij⋅[gcd(i,j)=1]+1
由于互质的对称性
=
2
∑
i
=
2
n
i
φ
(
i
)
⋅
i
2
+
1
=2\sum_{i=2}^ni\frac{\varphi(i)\cdot i}{2}+1
=2i=2∑ni2φ(i)⋅i+1
=
∑
i
=
2
n
i
2
φ
(
i
)
+
1
=\sum_{i=2}^ni^2\varphi(i)+1
=i=2∑ni2φ(i)+1
=
∑
i
=
1
n
i
2
φ
(
i
)
=\sum_{i=1}^ni^2\varphi(i)
=i=1∑ni2φ(i)
F
(
S
)
=
∑
T
∈
S
f
(
gcd
(
a
∈
T
)
)
∏
a
∈
T
g
(
a
)
F(S)=\sum_{T\in S}f(\gcd(a\in T))\prod_{a\in T}g(a)
F(S)=T∈S∑f(gcd(a∈T))a∈T∏g(a)
=
∑
d
=
1
m
f
(
d
)
∑
T
∈
S
[
d
=
gcd
(
a
∈
T
)
]
∏
a
∈
T
g
(
a
)
=\sum_{d=1}^mf(d)\sum_{T\in S}[d=\gcd(a\in T)]\prod_{a\in T}g(a)
=d=1∑mf(d)T∈S∑[d=gcd(a∈T)]a∈T∏g(a)
后面的式子变得比较难化简,但如果
[
d
=
gcd
(
a
∈
T
)
]
[d=\gcd(a\in T)]
[d=gcd(a∈T)]变成
[
d
∣
gcd
(
a
∈
T
)
]
[d|\gcd(a\in T)]
[d∣gcd(a∈T)],后面的式子便可根据组合意义变成
∑
T
∈
S
[
d
∣
gcd
(
a
∈
T
)
]
∏
a
∈
T
g
(
a
)
=
∏
d
∣
a
,
a
∈
S
(
g
(
a
)
+
1
)
\sum_{T\in S}[d|\gcd(a\in T)]\prod_{a\in T}g(a)=\prod_{d|a,a\in S}(g(a)+1)
∑T∈S[d∣gcd(a∈T)]∏a∈Tg(a)=∏d∣a,a∈S(g(a)+1)
考虑构造函数
f
(
n
)
=
∑
d
∣
n
h
(
d
)
f(n)=\sum_{d|n}h(d)
f(n)=∑d∣nh(d)
=
∑
d
=
1
m
h
(
d
)
∑
T
∈
S
[
d
∣
gcd
(
a
∈
T
)
]
∏
a
∈
T
g
(
a
)
=\sum_{d=1}^mh(d)\sum_{T\in S}[d|\gcd(a\in T)]\prod_{a\in T}g(a)
=d=1∑mh(d)T∈S∑[d∣gcd(a∈T)]a∈T∏g(a)
=
∑
d
=
1
m
h
(
d
)
∏
d
∣
a
,
a
∈
S
(
g
(
a
)
+
1
)
=\sum_{d=1}^mh(d)\prod_{d|a,a\in S}(g(a)+1)
=d=1∑mh(d)d∣a,a∈S∏(g(a)+1)
同样增量求解,时间复杂度为调和级数
t3 还不会
2021.4.3省选模拟
t1 奇怪的
d
p
dp
dp
t2 考虑分块,块内修改时,记录一下图中哪个点被走过,如果一个点走到一个已经被走过的点,那么这个点一定不可能是最小的,散块修改时,如果这个点曾经被删除过,用长链剖分
k
k
k级祖先算法
O
(
1
)
O(1)
O(1)还原其位置,判断是否加入回集合内,每个块最多走遍整个图,综合来看,时间复杂度为
O
(
n
n
)
O(n\sqrt{n})
O(nn)
t3 奇怪的概率题
2021.4.5省选模拟
t1 又把
A
C
AC
AC自动机复习了一遍,总算把
A
C
AC
AC自动机真正的理解了,理解了一些
f
a
i
l
fail
fail树的性质
先对所有字符串建出
A
C
AC
AC自动机,设
f
i
f_i
fi表示以
i
i
i为尾结点的串最大值,考虑更新一个字符串
s
s
s,将根到该串尾结点的所有结点的
f
f
f取最值,最后加上
v
a
l
val
val,最后将
f
a
i
l
fail
fail树的子树的
f
f
f取
m
a
x
max
max
t2 这种奇怪的限制基本上就是网络流了,若无限制,建立超级源点
s
s
s和超级汇点
t
t
t,对每个函数都建一堆点,
x
−
1
x-1
x−1对应的点像
x
x
x对应的点连一条大小为
−
f
(
x
)
-f(x)
−f(x)的边,
s
s
s向函数开头代表的点连一条大小为
i
n
f
inf
inf的边,函数结尾代表的点向
t
t
t连一条大小为
i
n
f
inf
inf的边,最小割大小显然就是答案。若有限制
x
u
≤
x
v
+
D
x_u\le x_v+D
xu≤xv+D,
x
u
−
D
≤
x
v
x_u-D\le x_v
xu−D≤xv,
u
u
u函数的每一个
x
x
x都向
v
v
v函数中的
x
+
D
x+D
x+D连一条边,无解随便怎么判都行
t3 神仙题,好像要用线性基+LCT
2021.4.7
t1 神仙
d
p
dp
dp,斜着太丑,直接将图形往右推,这样操作就变成了横着染色,或者竖着染色,设
f
i
,
j
f_{i,j}
fi,j表示第
i
i
i行,第
j
j
j列的格子为白色,并且该格子到该行最后一个格子全部染黑的方案数,答案显然为
∑
i
=
1
∑
j
=
1
f
i
,
j
+
1
\sum_{i=1}\sum_{j=1}f_{i,j}+1
∑i=1∑j=1fi,j+1
考虑如何转移,分两种情况,第一种,从第
j
j
j列的状态转移过来,即
f
k
,
j
,
k
<
i
f_{k,j},k<i
fk,j,k<i都能直接转移到
f
i
,
j
f_{i,j}
fi,j,第二种,从
f
k
,
h
,
k
<
i
f_{k,h},k<i
fk,h,k<i转移到下,由于
j
j
j列之后都会染黑,所以
h
≤
j
h\le j
h≤j,又因
h
=
k
h=k
h=k已经讨论,所以
h
<
k
h<k
h<k,由于
h
h
h之后也会染黑,所以
k
k
k所代表的行的结尾必须在
j
j
j前面,结尾到
(
i
,
j
)
(i,j)
(i,j)之间的格子都可以随便填,乘上
2
d
i
s
2^{dis}
2dis次方就行了,
d
i
s
dis
dis表示结尾到
(
i
,
j
)
(i,j)
(i,j)之间的距离,时间复杂度为
O
(
n
3
)
O(n^3)
O(n3),好像再优化一下就变成
n
2
n^2
n2,只是我太菜,听不懂