NOIP2024集训Day37 DP

NOIP2024集训Day37 DP


A. [CQOI2011] 放棋子

\(f_{i, j, k}\) 表示前 \(k\) 种棋子放了任意 \(i\) 行、\(j\) 列。决策是:在哪些位置填同种颜色的棋子。

于是美剧上一个状态的 \(i, j\)(表示为 \(l, r\)),上一状态 \(k_1 = k - 1\)

\(g_{i, j, k}\) 表示 \(k\) 个同种颜色的棋子放了任意 \(i\) 行、\(j\) 列的方案数,则 \(f_{i, j, k} = f_{i, j, k} + f_{l, r, k - 1} \times g_{i, j, k} \times \dbinom{n - l}{i - l}\times \dbinom{m - r}{i - r}\)

\(\dbinom{n - l}{i - l}\) 表示在空着的 \(n - l\) 行中选出 \(i - l\) 行放棋子。\(\dbinom{m - r}{i - r}\) 同理。

怎么求 \(g_{i, j, k}\)?

直接求不行,那就换一种思路——容斥,用所有方案减去不合法的方案(即有行列没有填,或者可以理解为合法的局部方案)。

\(g_{i, j} = \dbinom{i \times j}{k} - g_{l, r} \times \dbinom{i}{l} \times \dbinom{j}{r}\)

依式转移即可。

由于只要放完棋子而不一定要摆满行列,则 \(ans = \sum\limits_{i = 1}^{m} \sum\limits_{j = 1}^{n} f_{i, j, c}\)

注意:

  • 允许一种颜色的棋子只放行、不放列的情况。
  • 注意 \(\dbinom{n}{m}\)\(n\ge m\)

B. [AGC043D] Merge Triplets

考虑序列归并的过程,可以发现每次会将某序列的相邻两个前缀最大值之间的部分依次加入。

不难发现,最终产生的序列实际上和前缀最大值有某种神秘的关系。

具体地说,我们把每个前缀最大值开头到下一个之前的这部分单独看成一个组,而抛弃原来“划分成的 \(n\) 个小序列”的概念,组和组不同当且仅当组中至少一个元素不同,那么计数答案就相当于计数这样划分组的方案,满足所有组恰好能够拼成 \(n\) 个长度为 \(3\) 的序列,组之间无编号。

于是可以转化成将 \([1, 3n]\) 这些数分成若干组,每组大小不超过 \(3\),组之间无编号,且大小为 \(1\) 的组数减去大小为 \(2\) 的组数大于等于 \(0\) 且为 \(3\) 的倍数。直接 dp 即可。

时间复杂度 \(\Theta(n^2)\).


C. [AGC059C] Guessing Permutation for as Long as Possible

考虑三个数 \(a\)\(b\)\(c\),如果我们要求 \(a\)\(c\) 的关系不能再询问之间被得出,就必须保证 \(b\) 不在 \(a\)\(c\) 之间。

所以可以用并查集维护每个数之间的关系。

每一个连通块之间的关系可以唯一确定一个排列,设连通块数量为 \(k\),答案 \(2^k\)


E. [ARC117C] Tricolor Pyramid

转化 \(a\otimes b \rightarrow -(a+b) \mod 3\)

然后组合数算贡献。

注意下,处理阶乘时如果 \(n \ge 3\),就会 \(n! \equiv 0 \pmod{3}\)。所以维护一个数的同时维护它当中因数 \(3\) 的个数。


F. [AGC053D] Add and Remove

发现左右端点永远不会被删而且它的值只被算了一次,最后被删的那个数的值被算了两次。

考虑一段左右端点在删完中间点之前不会被删的区间,设 \(f(i)\) 表示 \(a_i\) 的值被算的次数。易知 \(f(lst) = f(l) + f(r)\)

然后根据这个式子枚举最后一个被删的点,分治再枚举。


H. [EGOI2022] Lego Wall / 乐高墙

\(f_i\)\(i\) 列时的答案,\(g_n\) 表示无限制摆放时 \(n\) 列的方案数,枚举第一次断开的位置有:\(f_i = \sum f_i \times g_{i - j}\)

注意到第 \(i\) 列的摆法情况只和第 \(i - 1\) 列有关,可以记录凸出的 \(1\times 2\) 的方块数量,因此我们可以记 \(f_{i, j}\) 表示对于第 \(i\) 列,有 \(j\) 个小块凸出到 \(i + 1\) 列的合法方案数,则:\(f(i, j) = \sum\limits_{k = 1}^{m - 1} f(i - 1, k) \times \dbinom{m - j}{k}\)

将两种做法结合,讨论 \(n\)\(m\) 大小关系。时间复杂度 \(\Theta((nm)^{\frac{4}{3}})\)


posted @ 2024-09-28 15:58  Leirt_Abu  阅读(17)  评论(0)    收藏  举报