ARC171 A~D 题解

前言:

67676767676767676767676767676767676767676767676767

A

显然把兵放在奇数行,把车放在偶数行。

  • 当 \(a\le \frac{N}2\) 时,可以放 \(\lfloor \frac{N+1}2 \rfloor\) 行兵。

  • 否则放 \(N-a\) 行兵。

答案是 \(\max(\lfloor \frac{N+1}2 \rfloor, N-a) \cdot (N-a)\)。

B

如果 \(i < p_i\),就连一条 \(i\to p_i\) 的边。这样会形成若干条链,而 \(a_i\) 是链顶。注意到所有的 \(a_i\ne i\) 的结点已经确定,这些点只能放 \(p_i\le i\) 的,乘法原理统计即可。

C

来自 \(\color{red}{\texttt{rui\_er}}\colorbox{red}{\color{white}{尺子}}\) 姐姐的非常好理解的做法。

设 \(dp[u][i][0/1]\) 为与 \(u\) 相连的边断了 \(i\) 条,\(u\) 与父亲的边是否断了,\(u\) 子数内的答案的方案数是多少。

初始状态为 \(dp[u][0][0] = 1, dp[u][1][1] = [u \ne 1]\)。

转移就是:

\[\left\{ \begin{aligned} dp[u][i][0] \leftarrow dp[u][i][0] \cdot \sum dp[v][i][0]+[i>0]\cdot dp[u][i - 1][0] \cdot \sum dp[v][i][1] \\ dp[u][i][1] \leftarrow dp[u][i][1] \cdot \sum dp[v][i][0]+[i>1]\cdot dp[u][i - 1][1] \cdot \sum dp[v][i][1] \end{aligned} \right. \]

最后答案是 \(\sum dp[1][i][0]\)。

D

实际上这道题 \(B\) 是假的。

设 \(sum[i]\) 表示 \(1\sim i\) 的哈希值,那么必然不存在 \(sum[l - 1] \equiv sum[r] \pmod p\)。

对于这种二元关系,我们考虑建图。即在 \(l-1\) 和 \(r\) 之间连边。

这样,题目变为了每条边两个端点不能相等。

考虑子集 \(dp\),设 \(dp[S]\) 表示只关注 \(S\) 这个子图的最小染色数,显然有转移 \(dp[S] \leftarrow \min_{T\subseteq S}dp[S/T]+1\)。最后 \(dp[[0, N]] \le P\) 即为合法。

posted @ 2026-09-27 00:23  J1angHz  阅读(9)  评论(0)    收藏  举报