祝大家新年快乐,场场ak!
新年的XOR
出题人 jiry_2
数据和题解 jiry_2
这道题可能并没有那么有趣..本来有一道很棒的 A,但是比赛前突然被发现是个假题..然后就临时出了这么个题..感觉送送分还是不错的。
算法一
既然
时间复杂度
算法二
暴力算异或和太蠢了,直接预处理个前缀异或和
时间复杂度
算法三
好像预处理完前缀异或和之后左端点都不用枚举了,直接枚举右端点然后查表看看有没有能用的左端点就好了。
时间复杂度
算法四
好像所有合法的区间左端点都很小。那么就在
怎么算前缀异或和呢?不难发现
时间复杂度
算法五
诶好像算法四直接 A 掉了。不难发现
因为要求区间的两端都是正数以及区间长度大于
时间复杂度
新年的叶子
出题人 liu_runda
数据和题解 Scape。
算法一
我们先来考虑一下有关直径的一些性质。
我们这里定义直径的长度是直径上边的条数。
显然一棵树可能会有多条直径,但是这些直径的中点显然应该是重合(对于直径长度是偶数)或者相邻(对于直径长度是奇数)。
否则的话我们可以从直径的一个端点出发,走到直径的中点,再走到另一条直径的中点后走到另直径的一个端点,这样可以得到一个更长的直径。
所以我们可以找到任意一条直径的中点,然后把所有叶子按照它位于这个中点的哪个儿子的子树中分成若干个集合,并且以该中点为根计算出每个叶子的深度。
令叶子的深度最大值是
对于直径长度为偶数的情况,直径会变小 当且仅当 所有没有被染黑的且深度为
对于直径长度为奇数的情况,直径会变小 当且仅当 深度为
接下来我们就要考虑这样一个问题,我们有若干个集合,每个集合里都有若干个叶子。我们每次会随机染黑一个叶子,问期望多久后只剩下一个集合里的叶子不是全黑。
令叶子总数是
我们可以先转化一下,把“每次随机染黑一个叶子(可能会重复染黑)”改成“每次随机染黑一个还没有被染黑的叶子”。这样转化后,假设还剩下
接下来我们只要暴力枚举删除叶子的顺序,就可以计算了。
时间复杂度
算法二
我们考虑枚举哪个集合最终剩下了。
令
时间复杂度
算法三
我们考虑枚举哪个集合最终剩下了,设当前集合大小为
设所有集合大小的和为
我们枚举当其他所有集合都染黑时,当前集合还剩下
线性预处理阶乘,阶乘逆元与逆元的前缀和就可以做到
算法四
from WuHongxun
什么,那么上面复杂的贡献你不知道怎么回事?不要急,这个题之所以在B题而不是C题,就是因为有算法四。
考虑我们每次枚举一个集合
这个期望时间当然非常好算,如果一共有
算出来这个有什么用呢?
考虑任何一个方案里我们染黑到所有集合都变黑了为止,它对答案的贡献是多少呢?如果
所以只要每次枚举一个集合,算剩下集合全部染黑的期望时间加到答案中,最后在答案里扣掉
是不是非常简单呢?
新年的五维几何
出题人 ftiasch
数据和题解 WrongAnswer
算法一
当
可以通过子任务1,期望得分5分。
算法二
注意到如果有一个
当
若
若
结合上述算法,可以通过子任务1,2,期望得分15分。
算法三
当
用
考虑只有一个约束
当有两个约束
结合上述算法,可以通过子任务1,2,3,4,期望得分50分。如果你只考虑了
算法四
对于当
设
当
否则,因为
当
注意到
结合上述算法,可以通过子任务1,2,3,4,7,期望得分70分。
算法五
注意到
当
因为
- 当
时,约束总能满足,不考虑该约束; - 当
时,约束不可能满足,该情况的概率直接返回 ; - 当
时,约束等价于 。
现在只要考虑若干个形如
注意到如果所有的
直接枚举排列或者状压DP均可计算拓扑序个数。
时间复杂度
新年的代码
数据 worse
题解 WuHongxun
算法一
当然是
算法二
我们大力猜结论!
每个位置只会不连续的变化两段!
dp就只需要
交一发,100分。
其实是有道理的啦...
myy(matthew99)丢给了我一个他猜完结论后的这题代码,虽然我没看懂:https://paste.ubuntu.com/p/6P7XZ6zT2W/
算法三
我们任意给
我们定义
首先长度为
事实上我们可以构造出一个只需要
否则不妨假设
于是剩下的唯一问题就是
如果是
如果是
这样我们就构造出了一段只需要
我们还需要证明两端之间是独立的,在上一个结论的基础上,这也不难。我们考虑每次在两端之间操作一下,相当于合并了两端。
假如本来两端长度是
合并多段的情况一样可以这么证明。
接下来只需要检查
对于长度为
这样就可以有理有据的获得100分啦。
新年的投票
出题人 WuHongxun
数据和题解 WuHongxun
算法一
老师,我会爆搜!
先假设所有人不带标号,然后所有决策一共有
这是什么道理呢,如果所有人不带标号,那么我们可以这么构造:
如果多数掌握在
如果多数掌握在
唯一的问题是如果看到的
这样一来只有
这样就可以过任务一啦!
此时得分
算法二
如果不带编号的爆搜少女已经gg了...
那么我们就一定要利用上标号才行,任务二太难不会,任务三分数最低肯定最简单,我们先来看看任务三吧。
第
既然前面加起来只有
这样就有
任务三就轻易解决了,果然是个送分提答呀。
此时得分
算法三
我们再回头看看任务二。
我们把它所有人分成
从第一组开始,如果他之前没有
如果前面有
这样只有全部xor = 1的时候会gg,这样的概率是
所以做到了
此时得分
算法四
现在就只剩下任务四了,看起来应该是需要一个对于任意的
每个人可以看到一个
所有人的策略加起来也是一个k次多项式,最后的结果就是这个多项式带
反过来如果有一个k次多项式,那么我们把它的每一项分配给对应的人作为他们的投票策略,也是可行的策略。所以这两个问题完全等价。
我们如何找到一个这样的
设
显然把
此时得分