abc154
题解翻译器 2022-4-30
A题
过于简单,不解
B题
过于简单,不解
C题
过于简单,不解
D题
过于简单,不解
E题
简单数位
d
p
dp
dp ,dp[i][j][0/1]
表示处理到第
i
i
i 位,已经有了
j
j
j 个非零数,是否到达上界的方案数。然后直接转移即可。
如果不懂,移步浅学数位dp_Shining_xzl的博客
F题
一个不那么水的组合数学题。
要求的是
∑
i
=
r
1
r
2
∑
j
=
c
1
c
2
(
i
+
j
i
)
\sum _{i = r1} ^{r2} \sum _{j = c1} ^{c2} {i + j \choose i}
i=r1∑r2j=c1∑c2(ii+j)
题解介绍了一大堆关于组合数的入门知识,相信大家都不用看
直接来说结论吧,直接算的复杂度是
O
(
n
2
)
O(n^2)
O(n2) 的,考虑优化,我们优化第二维,规定
S
(
n
,
m
)
=
∑
i
=
0
m
(
n
+
i
n
)
S(n,m) = \sum _{i=0} ^m {n + i \choose n}
S(n,m)=∑i=0m(nn+i)
∑
i
=
r
1
r
2
∑
j
=
c
1
c
2
(
i
+
j
i
)
=
∑
i
=
r
1
r
2
S
(
i
,
c
2
)
−
S
(
i
,
c
1
−
1
)
\begin{aligned} \sum _{i = r1} ^{r2} \sum _{j = c1} ^{c2} {i + j \choose i} &= \sum _{i = r1} ^{r2} S(i,c2) - S(i,c1-1) \end{aligned}
i=r1∑r2j=c1∑c2(ii+j)=i=r1∑r2S(i,c2)−S(i,c1−1)
考虑如果算
S
(
n
,
m
)
=
∑
i
=
0
m
(
n
+
i
n
)
S(n,m) = \sum _{i=0} ^m {n + i \choose n}
S(n,m)=∑i=0m(nn+i)
S
(
n
,
m
)
=
∑
i
=
0
m
(
n
+
i
n
)
=
∑
i
=
0
m
(
n
+
i
−
1
n
)
+
(
n
+
i
−
1
n
−
1
)
=
S
(
n
,
m
)
−
(
n
+
m
n
)
+
S
(
n
−
1
,
m
)
\begin{aligned} S(n,m) &= \sum _{i=0} ^m {n + i \choose n} \\ &= \sum _{i=0} ^m {n + i - 1 \choose n} + {n + i - 1 \choose n - 1} \\ &= S(n,m) - {n + m \choose n} + S(n - 1, m) \\ \end{aligned}
S(n,m)=i=0∑m(nn+i)=i=0∑m(nn+i−1)+(n−1n+i−1)=S(n,m)−(nn+m)+S(n−1,m)
然后就有
S
(
n
,
m
)
=
(
n
+
m
+
1
n
+
1
)
S(n,m) = {n + m + 1 \choose n + 1}
S(n,m)=(n+1n+m+1)
复杂度就减低到了
O
(
n
)
O(n)
O(n)