NOIP 模拟赛

11.5

流星雨

给定一个多项式 \(P(x) = \sum_{i=0}^{n-1} a_i x^i,\ a_i \in \{0, 1\}\),求 \(P^k(x)\) 中有多少项的系数是奇数

数据范围:\(1 \le n \le 20,\ 1 \le k \le 10^{16}\)

首先,根据 \((a + b)^p \equiv a^p + b^p \pmod p\),我们观察到一个性质:\(P^2(x) \equiv P(x^2) \pmod 2\),也就是说 \(\text{popcnt}(P^2(x)) = \text{popcnt}(P(x^2))\),那么,根据这个性质,我们就可以将 \(k\) 二进制分解,做 \(\lg k\) 次多项式乘法,期望得分 \(60\)

下文中 \(F(x) \equiv G(x) \pmod 2\) 意思是 \(\forall k \in [0, n - 1], [x^k] F(x) \equiv [x^k] G(x) \pmod 2\),这也意味着 \(\text{popcnt}(F(x)) = \text{popcnt}(G(x))\)

上面的性质启示我们通过递推解决问题,即当 \(2 | k\) 时,有 \(P^k(x) \equiv P^{k/2}(x^2)\)

接着我们需要考虑 \(k\) 是奇数的情况,\(P^{2t+1}(x) \equiv P^{t}(x^2) \times P(x)\)

这时我们就需要用到多项式分治的经典方法了:按指数奇偶性分类

\(f(x) = f_0(x^2) + x f_1(x^2)\)

那么,\(P^{2t+1}(x) \equiv P^{t}(x^2) \times (P_0(x^2) + xP_1(x^2)) \equiv P^t(x^2)P_0(x^2) + xP^t(x^2)P_1(x^2)\)

而且,由于是按照指数分类,上面和式的前后两项不会有同类项,于是,

\[\begin{aligned} \text{popcnt}(P^{2t+1}(x)) &= \text{popcnt}(P^t(x^2)P_0(x^2)) + \text{popcnt}(xP^t(x^2)P_1(x^2)) \\ &= \text{popcnt}(P^t(x)P_0(x)) + \text{popcnt}(P^t(x)P_1(x)) \end{aligned} \]

到这里,我们再手动往下推几层,就可以看出来子问题了:求 \(\text{popcnt}(P^t(x)G(x))\),并且,由于转移时 \(t \rightarrow \lfloor t/2 \rfloor\),我们只需要求 \(t = \lfloor k / 2^i \rfloor\) 的答案,另 \(dp(i, G) = \text{popcnt}(P^{\lfloor k / 2^i \rfloor}(x)G(x))\),就可以按上述拆解方法转移了

11.13

P10681 [COTS 2024] 奇偶矩阵 Tablica

题面 考虑只包含 $0$ 和 $1$ 的 $N\times M$ 矩阵 $A$。

我们称满足以下条件的矩阵是好的:

  • \(\forall 1\le i\le N\)\(\displaystyle \sum_{j=1}^M A_{i,j}\in \{1,2\}\)
  • \(\forall 1\le j\le M\)\(\displaystyle \sum_{i=1}^N A_{i,j}\in \{1,2\}\)

求出 \(N\)\(M\) 列的好的矩阵的数量,对 \((10^9+7)\) 取模。

以下假设 \(n \ge m\)

题目相当于我们要在每一行选 \(1\)\(2\) 列填上 \(1\),并且每行选的数中不能有多于两个相同。

再进一步简化,相当于我们要选 \(n\)\(pair\) 或单点,联系到之前的一个 CF 题,我们可以将 \(pair\) 也拆成单点考虑,

所以问题就变成:选 \(k\) 个数,\(1 \sim m\) 至少出现一次,相同的数不超过两个,再将他们分配到 \(n\) 个大小至多为 \(2\) 的非空集合里面,每个集合不能有相同元素的方案数,集合有标号

首先,我们发现大小为 \(2\) 的集合个数为 \(b = k - n\),首先我们钦定哪几个集合大小为 \(2\),方案数是 \(n \choose b\)

然后我们钦定除了 \(1 \sim m\) 还要选哪些数,方案数是 \(m \choose k - m\)

接着,我们考虑将这 \(k\) 个数分配至 \(n\) 个集合中的方案数,由于会有相同数分到同一个集合的情况,需要先进行容斥:

钦定有 \(t\) 个集合选了两个重复的数,那么这 \(t\) 个集合的选法有 \(b \choose t\) 种,重复的数的值又有 \(d \choose t\) 种,而且由于所钦定的集合之间顺序不固定,将他们全排列,有 \(t!\) 种方案。

然后剩下的数就可以随便排列,按顺序分配到剩下的集合当中,即对于一个排列,从前往后遍历这个排列,如果当前盒子不满,就放进去,否则往后挪一个盒子,也就是说每个排列都对应一种分配方法,这个方案数是可重集的全排列 \(\frac{(k - 2t)!}{2^{k - m - t}}\)

最后,由于集合是无序的,需要给答案除以 \(2^b\),并且,应该先容斥,再除以这个系数,因为在容斥的时候,如果有未被钦定的两个相同元素被分配到同一集合,那么多重集排列数会除一个 \(2\),集合间元素无序又会除一个 \(2\),就会多除,而容斥完后就没有相同元素在同一集合了,可以放心除

那么,最终式子应该长这样:

\[\sum_{k=n}^{2m} \binom{n}{k - n} \binom{m}{k - m} \frac{1}{2^b}\sum_{t = 0}^{b = k - n} (-1)^t\binom{b}{t} \binom{k - m}{t} t! \frac{(k - 2t)!}{2^{k - m - t}} \]

\(O(\min(m, n)^2)\)

当然,这种矩阵问题每行每列固定 \(1\) 的个数也可以二分图建模,将行看作左部点,列看作右部点,那么边 \((i, j)\) 就意味着点 \((i, j)\) 上填 \(1\),再本题中,就是说不能有二度点,不能有重边的连边方案数,推一下也能得到上面的式子

另一道二分图建模的题:CF1913E Matrix Problem

posted @ 2025-11-14 11:41  zhm0725  阅读(1)  评论(0)    收藏  举报