热身赛
题目比较水,打完后测了下环境(其实和上次一样),然后就跑路了
正式赛
和桂林那场形成鲜明反差。
毕竟北大出题,风格不一样
开场10min没人过题,意识到情况不妙。
之后看到 I 有人过,手推了一下,猜了个结论发现WA了,发现推的有问题,改了一下过了。
H 队友WA了一发,改了细节,过了。
C 我提出
O
(
n
log
n
)
O(n\log n)
O(nlogn) 的做法,队友在想线性做法。交了一发WA了,发现算法假了,之后花大量时间重想并实现了一发新的算法,然后TLE了。
队友测了一发极限数据,本机1100ms,被卡常了。我们不知道是改线性,改实现还是直接卡常。
期间另一个队友推F的结论,先猜了个假的,后来打表找了规律,然后过了F。此时已经接近封榜。
队友提出换一下C的二分上界,竟然过了。
最后和队友推K,发现K是一个Mobius反演,最后40min才开始写,所幸没出大问题,临近结束前过了,苟到了Au。
简要题解
I
1
∼
n
1\sim n
1∼n 的排列,前
i
i
i 项和是
2
i
2i
2i 的倍数,求方案数
思路:最后一项一定是 1,
(
n
+
1
)
/
2
(n+1)/2
(n+1)/2,
n
n
n ,而且发现
n
≥
4
n\ge 4
n≥4 时
(
n
+
1
)
/
2
(n+1)/2
(n+1)/2 都是不合法的,于是答案就是
3
×
2
n
−
2
3\times 2^{n-2}
3×2n−2
C
长度为
n
n
n 的项链上有
m
m
m 个珠子,每个珠子分一段,问最长段长度最小值。
思路:二分+贪心,贪心我是定义了结构体,用栈维护,可能常数有点大?
K
对所有长度为
n
n
n ,元素不超过
m
m
m ,
l
c
m
≥
p
lcm\ge p
lcm≥p ,
g
c
d
≤
q
gcd\le q
gcd≤q 的数列的所有元素的积求和。
思路:
l
c
m
∣
x
lcm|x
lcm∣x 的数列:
h
(
x
)
=
(
∑
d
∣
x
d
)
n
h(x)=(\sum_{d|x}d)^n
h(x)=(∑d∣xd)n
l
c
m
=
x
lcm=x
lcm=x 的数列:
g
(
x
)
=
∑
d
∣
x
μ
(
d
)
h
(
x
d
)
g(x)=\sum_{d|x}\mu(d)h(\frac{x}{d})
g(x)=∑d∣xμ(d)h(dx)
l
c
m
=
x
,
g
c
d
=
1
lcm=x,gcd=1
lcm=x,gcd=1 的数列:
f
(
x
)
=
∑
d
∣
x
μ
(
d
)
g
(
x
d
)
f(x)=\sum_{d|x}\mu(d)g(\frac{x}{d})
f(x)=∑d∣xμ(d)g(dx)
l
c
m
=
x
t
,
g
c
d
=
t
lcm=xt,gcd=t
lcm=xt,gcd=t 的数列:
t
n
f
(
x
)
t^nf(x)
tnf(x)
数列总贡献:
H
(
m
)
=
(
m
(
m
+
1
)
2
)
n
H(m)=(\frac{m(m+1)}{2})^n
H(m)=(2m(m+1))n
g
c
d
=
1
gcd=1
gcd=1 的数列:
G
(
m
)
=
∑
d
=
1
m
μ
(
d
)
H
(
[
m
d
]
)
G(m)=\sum_{d=1}^m\mu(d)H([\frac{m}{d}])
G(m)=∑d=1mμ(d)H([dm])
g
c
d
=
t
gcd=t
gcd=t 的数列:
F
(
t
)
=
t
n
G
(
[
m
t
]
)
F(t)=t^nG([\frac{m}{t}])
F(t)=tnG([tm])
a n s = H ( m ) − ∑ x = 1 p − 1 g ( x ) − ∑ t = q + 1 m F ( t ) + ∑ t = q + 1 m ∑ x = 1 [ p − 1 t ] t n f ( x ) ans=H(m)-\sum_{x=1}^{p-1}g(x)-\sum_{t=q+1}^mF(t)+\sum_{t=q+1}^m\sum_{x=1}^{[\frac{p-1}{t}]}t^nf(x) ans=H(m)−∑x=1p−1g(x)−∑t=q+1mF(t)+∑t=q+1m∑x=1[tp−1]tnf(x)
别的题我没怎么看,主要是C题卡太久了。
我觉得这套题不适合放在CCPC区域赛。