「Log」2023.12.27 小记
序幕
强势回归。
\(\text{6:40}\):补这几天的博客,随便开点题,今天应该有 abc。
abc 八点才开题,迅速地切。
到 F 题为止没有卡壳,Ex 是一个输出点分树的没水平的东西,打了一会秒了。
G 题看了一会发现是个卷积形态的东西,下标变换一下即可,一直在套 FFT 板子,然后就死掉了。
赛后发现没有清空,FFT 回来之后数组有改动,死亡了。
然后到午休之前貌似什么都没干,中午吃完饭就睡觉了。
下午不到两点起来接着写题。
暴力思路是简单的,想了一会感觉差不多就看题解了。
细节上差了一点,看了一会明白了思路。
很好,看不懂代码,开始沉思。
所有题解都把第二维放在了首位枚举,而不是先枚举第一维,不懂这样有什么方便的,而且都没解释。
自己打了个暴力,但是错了不知道为什么。
摆了,吃个饭先。
伟大的 cinccout 指出组合数部分初值有毛病,考虑极值就能看出来这部分问题。
wssb,脑子烧了导致的。
\(\color{blueviolet}{P3643}\)
首先考虑暴力 DP了,设 \(f_{i, j}\) 表示强制学校 \(i\) 参赛,考虑前缀学校,其派出 \(j\) 一辆划艇的方案数。
数量级太大了,考虑其中有一些状态本质相同,于是可以先离散化一下,对于离散化中的数据,一段一段是本质相同的,于是上述状态的 \(j\) 表示派出划艇数量在第 \(j\) 段。
于是有:
\(f_{i,j}=\begin{cases}\sum_{pos=0}^{i-1}\sum_{k=0}^{j-1}f_{pos,k}\times\binom{m+L_j-1}{m}&[t_j,t_{j+1})\subseteq[a_i,b_i)\\0&\mathrm{otherwise}\end{cases}\)
其中 \(m\) 表示 \((pos, i]\) 中可以派出 \([t_j,t_{j+1})\) 辆划艇的学校数量,\(L_j = t_{j + 1} - t_j\) 即这一段长度。
考虑以下枚举方式进行暴力,\(i, j, k, pos\),其中 \(pos\) 倒序枚举。
\(pos\) 倒序枚举的时候可以从上一次枚举继承一部分组合数以及 \(m\) 的运算。
这样发现 \(k\) 是无意义的,可以在第二维上做一个前缀和优化,然后就做完了。
\(\color{blueviolet}{CF1156F}\)
DP 状态是显然的,设 \(f_{i, j}\) 表示第 \(i\) 次抽卡抽取到 \(j\) 的概率,有转移:
\(f_{i, j} = \sum \limits_{k = 0}^{j - 1} f_{i - 1, k} \times \frac{buc_j}{n - i + 1}\)
这个东西后面的系数显然可以提出来然后前缀和优化转移。
然后考虑统计答案,每次转移的时候记录一个下一次抽取和这一次抽到一样的概率累加到答案上即可。
尾声
菜似了,回家睡觉。