5月、6月做题记录

whk考完了,复活了。继续更新。

1.CF1799G Count Voting

真正意义上解决了我的历史遗留问题——容斥,二项式反演。

这个题有两个限制,第一个是每个人都得有 \(C_i\) 票。第二个是每个人不能给同组内投票。 两个限制放到一起显然不是很好做,考虑容斥掉一个,我们可以考虑容斥掉第二个条件,即钦定有 \(i\) 个人选了自己组的人,其他人随意,即至少。那么我们就可以通过二项式反演来得到答案。

这里复习一波二项式反演,恰好(g)和至少(f)的转换

\[f_i = \sum_{j=i}^{n} \binom{j}{i} g_i \]

\[g_i=\sum_{j=i}^{n} -1^{j - i} \times \binom{j}{i} f_j \]

最多和恰好之间的转换也类似。

于是乎开始设计DP状态来求解问题,设 \(dp_{i,j}\) 表示到第 \(i\) 个组时钦定了 \(j\) 个人必须选本组内的方案数。 但是这个状态是分开设的,分子分母是分开的,首先这个题如果没有条件二的话就是 \(\frac{n!}{\prod_{i=1}^{n}c_i!}\) 如果钦定了k个人呢,设 \(a_i\) 表示这第 \(i\) 个人有 \(a_i\) 票是自己组投来的。那么方案数就是 \(\frac{n!}{\prod_{i=1}^{n}(c_i-a_i)!}\times F(k)\) 我们可以连分母一起DP,然后就来了方程了,自己推推这题就做完了。

2.AT_tenka1_2019_f Banned X

随便瞎找的题,感觉还蛮有意思的。

发现0这个东西对子段和没有任何影响,首先考虑如果该数列只由1,2两种数构成,设这样满足条件的并且一共用了 \(m\) 个1,2的数列的方案数为 \(f_m\),那么 \(ans=\sum_{i=0}^{n} \binom{n}{n - i}f_i\)

那么接下来就考虑如何去求解这个 \(f\)。设数列总和为 \(s\),容易发现当且仅当 \(s\)\(x\) 的奇偶不同时才有解,除非 \(s < x\) 时。后者是容易的,考虑前者,然后发现一个性质,如果一序列中不存在和为 \(x\) 的子段,那么一定有前缀和为 \(x-1\) 的位置,设这个位置为 \(k\),那么 \(a_{k + 1}=2\),那么 \(a_1=2\),递推下去即得 \(a_1 … a_{n-k}\)\(a_{k + 1} … a_n\) 都为2,然后对中间部分计数即可,再判一下能不能全填偶数即可。

3.CF792E Colored Balls

很妙的数学题。最后的每一堆一定是 \(x\) 或是 \(x + 1\)。我们希望 \(x\) 尽量的大。设 \(a\) 中最小的数为 \(a_1\)。不难发现 \(x\le \sqrt{a_1}\) 一定合法,但就是 \(x> \sqrt{a_1}\) 比较难搞。但是发现商只有 \(\sqrt{a_1}\) 种,考虑挖掘一下商与 \(x\) 的关系,此时需要集中一下注意力,发现不等式 \(\left \lfloor \frac{a_1-p}{p} \right \rfloor \le \left \lfloor \frac{a_1-q}{p} \right \rfloor \le\left \lfloor \frac{a_1}{p} \right \rfloor\)

化简得到 \(\left \lfloor \frac{a_1}{p} \right \rfloor -1 \le x \le \left \lfloor \frac{a_1}{p} \right \rfloor\)

然后就 \(\mathcal O(n\sqrt{v})\) 就能做了。

posted @ 2024-05-04 11:57  zjc2008  阅读(10)  评论(0编辑  收藏  举报