236 ABC288H A Nameless Counting Problem
被薄杀了!!
首先很容易通过数位 dp 计算出长度为 \(k\) 异或为 \(X\) 的序列个数,这一部分是 \(O(n^3\log V)\) 的。
一个递增序列可以通过删除若干相同 pair 映射到唯一的集合,于是我们若对于所有 \(k\) 计算出元素不同的,长度为 \(k\) 异或为 \(X\) 的序列个数,则可以通过塞入若干不影响异或和的相同 pair 来生成出所有递增序列,这无非是一个插板法的事情。
计算上面那个东西有两种处理方法,第一种可能更机械,但我觉得考虑起来也比较麻烦。
①元素互不相同指向了集合划分容斥,我们将出现次数为奇数的数与出现次数为偶数的数分开考虑,依次加入若干个“等价团”就可以 dp 出 \(i\) 个等价团,大小和为 \(j\),大小全为奇数/偶数的容斥系数和。注意到我们并不在乎偶数大小的团的个数,只需将贡献乘上团个数阶乘的倒数来保证无序。
因此合并奇数偶数只用枚举奇数团的个数与大小和,以及偶数团的大小和,那么我们就可以 \(O(n^3)\) 地计算上面那个问题了。
②官方题解做法:直接进行普通的容斥,假设 \(n\) 个数字中有 \(i\) 个出现次数为奇数的数字,其对应了 \(j\) 个下标,那么转移就是一个组合数选出这些下标,乘上将 \(j\) 个数分成 \(i\) 个大小为奇数的集合的方案数,将 \(n-j\) 个数分成若干个大小为偶数的集合的方案数,乘上长度为 \(i\),互不相同,异或和为 \(X\) 的序列个数,转移容易做到 \(O(n^3)\)。
237 ABC289H Trio
破题水(
根据经验,我们只需计算 \(i\) 步从初始态走到一起的方案数构成的多项式以及 \(i\) 步从在一起的状态走到一起的方案数多项式即可。
第一个问题显然弱于第二个,我们不妨令 \(u,v\) 为第一二个人的距离与第二三个人的距离,于是方案数为:
\[\sum_i{T\choose i}{T\choose i+u}{T\choose i+v} \]一次卷积即可,复杂度 \(O(n\log n)\)。
238 ABC290H Bow Meow Optimization
竟然不会做,伤心
标签:frac,大小,个数,41,偶数,轰鸣,2023,序列,集合 From: https://www.cnblogs.com/xiaoziyao/p/17171363.html