4.10 比赛题解

$4.10$ 比赛部分题解

$t1$ 暮色苍然

$Descroition$

$Solution$

由题意可以列出一点东西:
$$
\begin{cases}gcd(x, y) = a_1
\\gcd(x, y + 1) = a_2
\\gcd (x, y + 2) = a_3
\\\ldots
\\gcd(x, y + l - 1) = a_l
\end{cases}
$$
可以发现
$$
\begin{cases}
a_1|x, a_1 | y
\\a_2|x, a_2|(y + 1)
\\\ldots
\\a_l|x, a_l|(y + l - 1)
\end{cases}
$$

$$
\begin{cases}
y \equiv 0 \pmod{a_1}
\\y + 1 \equiv 0 \pmod{a_2}
\\\ldots
\\y + l - 1 \equiv 0 \pmod{a_l}
\end{cases}
$$
$exCrt$ 解方程,判断是否在 $n \times m​$ 范围内即可。

特别的,对于 $k >= m$ 的情况,必然无解。

$t2$ 云外苍天

$Description$

$Solution$

先考虑没有折返限制的情况。

考虑根据点来 $dp$ ,设 $f[i][j][k]$ 表示从 $i \to j$ 转化了 $2^k$ 的方案数。

转移方程就是
$$
f[i][j][k] = \sum_{l = 1}^{n} f[i][l][k - 1] \times f[l][j][k - 1]
$$
跟弗洛伊德十分类似。

显然这个东西可以用矩阵优化。

然后考虑有了折返限制之后怎么搞。

有一个很巧妙的转化:把按点来转移改成按边转移。

然后就做完了。

建图就是先初始化邻接矩阵,然后转移矩阵就是能到 $A$ 的全部赋为 $1$ ,因为可以转移到其他点。

之后因为转移矩阵已经转移过一次了,乘上邻接矩阵的 $T - 1$ 次幂即可。

答案就是最后能到 $B$ 点的全部计入答案。

$t3$ 彼岸归航

$Description$

$Solution$

显然后面的所有列的状态都与第一列相关,只能是等于第一列或者与第一列完全相反。

所以考虑先搞出第一列,然后慢慢算。

可以将矩阵看成两个 $01$ 串,如果跟第一列相同的是 $0$ ,不同的是 $1$ 。

设 $f[i][j]$ 表示最大连续串长度为 $i$ ,当前连续串长度为 $j$ 的方案数。

转移方程就是
$$
f[i][j] = \sum_{k = 1}^{min (i, j)} f[i][j - k]
$$
很好理解,最大连续串长度为 $i$ 的串不可能当前会由连续长度 $i + 1$ 的串转移过来,当前连续串的长度也不可能是负数。

用前缀和优化一下这个东西,就 $O(n^2)$ 了。