8.1-8.4总结

这几天代码能力简直掉成PJ水平了……各种数组开小+读错题+没考虑完

第一个是模拟赛。本来是原题大赛,可以AK的,但是T3没注意到是多测。这个暑假因为不看输出格式已经G了两道题了,事不过三。

第二个是CF Div2。本来是水题大赛,可以AK的,结果因为F读错题被卡了n年。然后导致E没时间调:Wa on 8 以为是做法假了,结果是数组开小。

顺便记录一下我读成什么题,以及想到的做法:\(F\) 是出现了奇数次的球的个数。

然后还是先用第二类斯特林数,转成 \(\sum C(F,i)\) 的形式,考虑钦定 \(i\) 个球,都出现奇数次的方案数。

用EGF表示一个这样的球,就是 \((e^x-e^{-x})/2\)

普通的球就是 \(e^x\) ,所以答案就是 \([x^n]((e^x-e^{-x})/2)^ie^{x(m-i)}\)

直接展开 \(((e^x-e^{-x})/2)^i\) 这一坨,然后对于每一项算系数就好了。

\(O(k^2)\) 的,过不去。而且注意到还要每次算快速幂,最后还得算 \(n!\) 的阶乘,实际上是 \(O(k^2\log n+n)\) 的。更离谱了。

于是就发现读错题了。读对题后发现就是个蠢题。

第三个是多校。打的还行,至少我们队把大众 7 题给打满了。

然后来做题记录吧。

[ARC068D] Solitaire

  1. 对于能否拆成两个递减序列这种问题,可以用最小链覆盖=最大反链,转化成有没有长度为3的递增子序列。

  2. 列出来一些dp式子后可以放到坐标系上思考,这是很常见的。

某道题

我们有时想估计一个东西 \(x\) 能取到的最小值,我们可以求它的期望来得到。

loj3405 Gem Island 2

原版的结论:每个终止状态出现概率相同。

然后考虑这个前 \(r\) 大的数的和,我们不妨枚举 \(i\) 以及 \(P=\sum [i\le a_j]\) ,然后贡献就是 \(\min(P,r)\)

这个其实就是排了序,画个柱状图,再侧个方向看的思想。

枚举完了 \(i\)\(P\) ,用生成函数来处理限制,答案就是

\([x^d]\frac{1}{(1-x)^n}\sum_ {i=1} \sum_{P\le n}\tbinom{n}{P} (\frac{x^i}{1-x})^P(\frac{1-x^i}{1-x})^{n-P}\min(r,P)\)

发现枚举 \(i\) 是比较鸡肋的,令 \(F(x)=\sum_{P\le n}\tbinom{n}{P} x^P(1-x)^{n-P}\min(r,P)\)

然后原来的式子可变成 \([x^d]\frac{1}{(1-x)^n}\sum_ {i=1}F(x^i)\)

如果算出来 \(F\) 那直接搞个狄利克雷前缀和就做完了。

\(F\) ?首先这个 \(\min\) 就很丑啊。我们把它拆了。

\(F(x)=\sum_{P\le r}\tbinom{n}{P} x^P(1-x)^{n-P}(P-r)+\sum_{P\le n}\tbinom{n}{P} x^P(1-x)^{n-P}r=r+\sum_{P\le r}\tbinom{n}{P} x^P(1-x)^{n-P}P-r\sum_{P\le r}\tbinom{n}{P} x^P(1-x)^{n-P}\)

啊把 \(P\) 换成 \(i\) 吧,式子越来越丑了。

先看 \(\sum_{i\le r}\tbinom{n}{i} x^i(1-x)^{n-i}i=nx\sum_{i\le r-1}\tbinom{n-1}{i} x^{i}(1-x)^{n-1-i}\)

所以主攻 \(G(x)=\sum_{i\le r}\tbinom{n}{i} x^i(1-x)^{n-i}\)

尝试展开 \((1-x)^{n-i}\) ,变成了 \(\sum_{i\le r}\tbinom{n}{i} x^i\sum_{j\le n-i} \tbinom{n-i}{j}(-x)^j\)

发现两个组合数有点像,所以直接展开变成 \(n!\sum_{i\le r}\frac{1}{i!} x^i\sum_{j\le n-i} \frac{1}{(n-i-j)!j!}(-x)^j\)

考虑 \(x^d\) 的系数就是 \(\sum_{i+j=d ,i\le r} \frac{1}{i!}\frac{(-1)^j}{j!}\)

所以关键就是求 \(H(x)=(\sum_{i=0}^r \frac{x^i}{i!})(\sum_{j=0}\frac{(-x)^j}{j!})=e^{-x}(\sum_{i=0}^r \frac{x^i}{i!})\)

发现 \(H'(x)=\frac{-x^r}{r!}e^{-x}\) ,就做完了。

GDKOI2021 某道题

题意大概是 \(f_i=\sum_{j=1}^{i-1}f_{j}f_{i-j}p_j\)

其中有 有 \(m\) 个条件 \(P_{a_i}=b_i\) ,其余的 \(p_{i}=A\)

然后让你求 \(f_n\)\(n\le 10^6,m\le 10,a_i<a_{i+1}\) ,模数是 \(10^9+7\)

一段一段的算,对于\((a_i,a_{i+1})\) 这部分可以得到一个 \(F(x)=AF(x)^2+G(x)F(x)+x\) ,其中 \(G(x)=\sum_{j\le i} x^{a_j}f_{a_j}b_j\)

然后呢 \(F(x)=\frac{-G(x)-\sqrt{G(x)^2-4Ax}}{2A}\) ,对着算就完了。

这里有个技巧:求 \(B(x)=A(x)^k\) ,就对它求导,同乘 \(A(x)\) 得到 \(kA'(x)B(x)=B'(x)A(x)\) ,然后能递推算

GDKOI2021 另一道题

题意大概是有一些黑点,\(n\le 15\)

然后一天时间内,一个格子变成周围四个格子的异或。

\(L\) 天到 \(R\) 天间每天黑点数量的和。

我们搞个经典的 \((x_i,y_i)->(x_i+y_i,x_i-y_i)\) ,每次就变成了 \((x±1,y±1)\)

我们按 \(x_i\) 的奇偶把点分成两堆。

然后怎么判断一个格子 \((X,Y)\)\(T\) 天的时候的状态,就是 \(\sum \tbinom{T}{\tfrac{x_i-X+T}{2}}\tbinom{T}{\tfrac{y_i-Y+T}{2}}\) 是否为奇。

判断组合数的奇偶,想到了卢卡斯定理。我们钦定一个子集 \(S\),使得对于 \(i\in S\) \(\tbinom{T}{\tfrac{x_i-X+T}{2}}\tbinom{T}{\tfrac{y_i-Y+T}{2}}\) 是奇数。

我们钦定完子集后,注意到整体平移不影响答案,所以转化成所有 \(x_i,y_i\) 都是非负的偶数。

枚举 \(x=\frac{T-X}{2},y=\frac{T-Y}{2}\) 就变成有多少 \(T,X,Y\) 满足所有 \(\tbinom{T}{x_i+x}\)\(\tbinom{T}{y_i+y}\) 是奇数。

数位 \(dp\) 即可,从低到高 \(dp\) 并记录 \(T\) 卡到 \(lim\) 没有,以及有多少个 \(x_i+x\) 进了位,多少个 \(y_i+y\) 进了位。

越大的数越容易进位,所以确定多少个进了位,哪些 \(i\) 进了位就确定了。

复杂度 \(O(2^nn^2\log V)\)

posted @ 2022-08-05 19:52  grass8woc  阅读(71)  评论(0编辑  收藏  举报