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

11.18

椅子游戏

题目传送门

其实是道数论题QwQ

首先,加操作是好做的,我们只需要维护一个偏移量 \(B\),表示原来第 \(i\) 个位置上的数现在在第 \((i + B) \bmod n\) 个位置上

对于乘法操作,我们考虑系数与模数的互质情况,令 \(d = \gcd(x, n)\)

\(d = 1\),则不会有冲突,即每个座位都只会有一名玩家移动到该座位处,只需要再记一个乘法偏移量即可

否则,一个座位上恰好会有 \(d\) 个人,也就是说只会剩下 \(n / d\) 个人,那么这个时候我们可以暴力重构,并将人数缩小为 \(n / d\)。那么,在剩下的人员列表当中,第 \(x\) 个人就是做在 \((dx + B) \bmod n\) 处的人

那么,我们就可以维护一个剩下的人员列表,第 \(x\) 个人就是坐在 \((DKx + B) \bmod n\) 处的人,其中,\(D\) 是所有情况二中最大公因数的积,\(K\) 是所有情况一中系数的积,\(B\) 是加法偏移量

那么,对于加法操作,\((D, K, B) \leftarrow (D, K, B + x)\)
对于乘法操作,情况一,\((D, K, B) \leftarrow (D, Kx, Bx)\)
对于情况二 \((D, K, B) \leftarrow (Dd, 1, Bx)\)

这是因为 \(K\) 仅起到调换环上数字的顺序的作用,但不会消去数字,我们重构之后就又有新的顺序了,就可以将 \(K\) 重置了

询问时,只需要解出,\(DKx + B \equiv p \pmod n\) 即可

也就是 \(D \mid p - B\)\(p \equiv \frac{p - B}{D} K^{-1} \pmod{\frac{n}{D}}\)

注意 \(K^{-1}\) 是模 \(n / D\)\(K\) 的逆元,\((K, n/D) = 1\),但 \((K, n)\) 不一定为 \(1\)

如果在场上,可以从 什么时候会有冲突 以及 模意义下乘法的处理方法 两个角度考虑问题

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