20210926下午
好经典的题,一看
T
5
T5
T5都是19年做的了,已经是老人了。
T1 | T2 | T3 | T4 | T5 | |
---|---|---|---|---|---|
预测 | 100 | 100 | 100 | 100 | 100 |
一测 | 0 | 100 | 100 | 100 | 100 |
T1:
即求划分数,公式为
F
i
,
j
=
F
i
−
1
,
j
−
1
+
F
i
−
j
,
j
F_{i,j}=F_{i-1,j-1}+F_{i-j,j}
Fi,j=Fi−1,j−1+Fi−j,j,经典
64
M
B
64MB
64MB开
l
o
n
g
l
o
n
g
long\ \ long
long long炸掉,开
i
n
t
int
int中间处理一下就行。
T2:
题目即要求出小于等于
n
n
n的约数个数最多的数,显然优先选择更小的质数,因为
37
37
37以内的质数乘起来就超过
2
e
9
2e9
2e9了,所以用10几个质数搜一下就行。(其实会发现反质数根本没几个,打个表也能随便过。
T3:
反向思考,用全部可能减去不会越狱的可能,全部可能为
m
n
m^n
mn,不会越狱的情况第一个监狱有
m
m
m种信教选择,后面的都只有
(
m
−
1
)
(m-1)
(m−1)种,所以为
m
×
(
m
−
1
)
n
−
1
m\times (m-1)^{n-1}
m×(m−1)n−1,快速幂即可。
T4:
经典矩阵加速,发现
T
n
T_n
Tn这个东西不太好放进矩阵转移,不如考虑构造新数列,设
Q
n
=
n
×
S
n
−
T
n
Q_n=n\times S_n-T_n
Qn=n×Sn−Tn,所以
Q
n
=
(
n
−
1
)
×
F
1
+
(
n
−
2
)
×
F
2
+
⋯
+
F
n
−
1
Q_n=(n-1)\times F_1+(n-2)\times F_2+\dots +F_{n-1}
Qn=(n−1)×F1+(n−2)×F2+⋯+Fn−1,观察前后
Q
n
Q_n
Qn,发现
Q
Q
Q数列可以用
Q
n
=
Q
n
−
1
+
S
n
−
1
Q_n=Q_{n-1}+S_{n-1}
Qn=Qn−1+Sn−1来转移,所以将
Q
n
Q_n
Qn放入矩阵,最后用
T
n
=
n
×
S
n
−
Q
n
T_n=n\times S_n-Q_n
Tn=n×Sn−Qn得到答案。矩阵推导如下:
{
Q
n
S
n
F
n
F
n
−
1
}
=
{
Q
n
−
1
+
S
n
−
1
S
n
−
1
+
F
n
F
n
−
1
+
F
n
−
2
F
n
−
1
}
=
{
1
×
Q
n
−
1
+
1
×
S
n
−
1
+
0
×
F
n
−
1
+
0
×
F
n
−
2
0
×
Q
n
−
1
+
1
×
S
n
−
1
+
1
×
F
n
−
1
+
1
×
F
n
−
2
0
×
Q
n
−
1
+
0
×
S
n
−
1
+
1
×
F
n
−
1
+
1
×
F
n
−
2
0
×
Q
n
−
1
+
0
×
S
n
−
1
+
1
×
F
n
−
1
+
0
×
F
n
−
2
}
=
{
1
,
1
,
0
,
0
0
,
1
,
1
,
1
0
,
0
,
1
,
1
0.0
,
1
,
0
}
×
{
Q
n
−
1
S
n
−
1
F
n
−
1
F
n
−
2
}
=
…
=
{
1
,
1
,
0
,
0
0
,
1
,
1
,
1
0
,
0
,
1
,
1
0
,
0
,
1
,
0
}
n
−
1
×
{
Q
1
S
1
F
1
F
0
}
=
{
1
,
1
,
0
,
0
0
,
1
,
1
,
1
0
,
0
,
1
,
1
0
,
0
,
1
,
0
}
n
−
1
×
{
0
1
1
0
}
\begin{Bmatrix} Q_n \\ S_n \\ F_n \\ F_{n-1} \\ \end{Bmatrix} \\= \begin{Bmatrix} Q_{n-1}+S_{n-1} \\ S_{n-1}+F_n \\ F_{n-1}+F_{n-2} \\ F_{n-1} \end{Bmatrix}\\= \begin{Bmatrix} 1\times Q_{n-1}+1\times S_{n-1}+0\times F_{n-1}+0\times F_{n-2} \\ 0\times Q_{n-1}+1\times S_{n-1}+1\times F_{n-1}+1\times F_{n-2} \\ 0\times Q_{n-1}+0\times S_{n-1}+1\times F_{n-1}+1\times F_{n-2} \\ 0\times Q_{n-1}+0\times S_{n-1}+1\times F_{n-1}+0\times F_{n-2} \end{Bmatrix}\\=\begin{Bmatrix} 1,1,0,0 \\ 0,1,1,1 \\ 0,0,1,1 \\ 0.0,1,0 \end{Bmatrix}\times \begin{Bmatrix} Q_{n-1} \\ S_{n-1} \\ F_{n-1} \\ F_{n-2} \end{Bmatrix}\\=\dots \\=\begin{Bmatrix} 1,1,0,0 \\ 0,1,1,1 \\ 0,0,1,1 \\ 0,0,1,0 \end{Bmatrix}^{n-1}\times\begin{Bmatrix} Q_1 \\ S_1 \\ F_1 \\ F_0 \end{Bmatrix}\\=\begin{Bmatrix} 1,1,0,0 \\ 0,1,1,1 \\ 0,0,1,1 \\ 0,0,1,0 \end{Bmatrix}^{n-1}\times\begin{Bmatrix} 0 \\ 1 \\ 1 \\ 0 \end{Bmatrix}
⎩⎪⎪⎨⎪⎪⎧QnSnFnFn−1⎭⎪⎪⎬⎪⎪⎫=⎩⎪⎪⎨⎪⎪⎧Qn−1+Sn−1Sn−1+FnFn−1+Fn−2Fn−1⎭⎪⎪⎬⎪⎪⎫=⎩⎪⎪⎨⎪⎪⎧1×Qn−1+1×Sn−1+0×Fn−1+0×Fn−20×Qn−1+1×Sn−1+1×Fn−1+1×Fn−20×Qn−1+0×Sn−1+1×Fn−1+1×Fn−20×Qn−1+0×Sn−1+1×Fn−1+0×Fn−2⎭⎪⎪⎬⎪⎪⎫=⎩⎪⎪⎨⎪⎪⎧1,1,0,00,1,1,10,0,1,10.0,1,0⎭⎪⎪⎬⎪⎪⎫×⎩⎪⎪⎨⎪⎪⎧Qn−1Sn−1Fn−1Fn−2⎭⎪⎪⎬⎪⎪⎫=…=⎩⎪⎪⎨⎪⎪⎧1,1,0,00,1,1,10,0,1,10,0,1,0⎭⎪⎪⎬⎪⎪⎫n−1×⎩⎪⎪⎨⎪⎪⎧Q1S1F1F0⎭⎪⎪⎬⎪⎪⎫=⎩⎪⎪⎨⎪⎪⎧1,1,0,00,1,1,10,0,1,10,0,1,0⎭⎪⎪⎬⎪⎪⎫n−1×⎩⎪⎪⎨⎪⎪⎧0110⎭⎪⎪⎬⎪⎪⎫
T5:
题目明示割点,那么我们以割点隔开的连通块以一个状态来计算。
1.若这个联通块内没有割点,那么就需要两个出口,防止炸了出口就无法出去。
2.若有一个割点那就建一个出口,炸割点就从出口出去,炸出口就从割点往外跑。
3.若有两个以上的割点那就不用建,不管炸哪都能从割点跑到其他连通块。
方案数只需统计一下连通块内非割点个数,组合数一下就行。
总结:老题回顾,那是我逝去的青春。