滑稽树上滑稽果
写题解之前,我们先来回顾一下上次比赛的A题题解:
这道题可能并没有那么有趣..本来有一道很棒的 A,但是比赛前突然被发现是个假题..然后就临时出了这么个题..感觉送送分还是不错的。
懂我意思吧?
如果看到题面里大大的滑稽还没有察觉事情不太对...请允悲...
子任务一
既然
时间复杂度
子任务二
保证是一条链了,我们就只要枚举排列了!
冷静一下马上就会意识到,答案一定是一条链。这个部分分肯定是出题人用来提示大家冷静一下的!
时间复杂度
子任务三
保证滑稽值的字典序最小?那就等于是每次枚举一个和当前的滑稽值and起来最小的值,然后把他加到后面。
时间复杂度
子任务四
把相同的位拿出来,这些位要么一定是每次没贡献,要么一定是每次有贡献。
那么剩下的位,每次一定会减去一位,从而最多只会用
时间复杂度
子任务五
出题人给了一个部分分是这个贪心的过程,我们睿(ruo)智(zhi)的分析一下,这个做法一定是错的!
事实上的确是希望考验大家独立思考、小心求证的能力。
我们一样先把每个数都一样的那些位拿出来,剩下的位我们等于是希望尽快把他们变成
这可以用一个dp来实现,
dp转移就是每次枚举一个
时间复杂度
子任务六
我们可以每次不枚举一个
现在的问题就是,判断有没有一个数他和
这非常好做,只需要每次
事实上dp的时候,我们可以用贪心得到的解来进行剪枝,所以是不卡常数的。
时间复杂度
滑稽树下你和我
算法一
直接输出两起始点距离即可。
期望得分
算法二
考虑"保证存在最优方案,在任意时刻至少有一端点位于树的某结点上"这个性质。
我们先考虑二分答案,显然可以设计一个dp即为
期望得分
算法三
同样我们先考虑二分答案,看答案是否能
我们考虑一条这样的性质。对于两个状态,两个点所在的边都相同,并且两个状态的两点间距离是
那么我们就可以依此设计状态,令
因为我写完这个东西已经是早上凌晨三点了,所以我当时就认为这个算法是
我们仔细分析一下,
期望得分
滑稽树前做游戏
By jiry_2
算法一
如果你做过 这个题,你就肯定知道菊花树的情况下答案就是
期望得分
算法二
结合算法一期望得分
算法三
这题据我所知有很多种复杂度较高的 DP 算法可以通过
和大部分期望题一样,令
我们把题目的输入看做一张
定义函数
如果所有点的权值都小于等于
,那么必定满足顶点权值最大值小于等于 ,因此此时的概率为 (令 的顶点个数为 )。如果至少有一个点的权值大于
,我们枚举权值最大的点 ,设它的权值为 。考虑所有与 相邻的点 ,所有 的出边中,权值最大的就是边 了,因此 的权值应当小于等于 (又 ,因此不会和其他限制导出矛盾)。我们删去第 个点和所有相邻点,得到了图 ,那么 中的点应当满足点权小于等于 且答案不超过 ,即概率为 。
因此,我们得到了关于函数
显然有
时间复杂度
算法四
怎么在算法三种作优化呢,我们发现算法三的复杂度的一个上界是子图个数,但是很多时候又不慢,比如在图是一个团的时候,
那是不是算法三可以直接跑过
不难发现对于一张不连通的图
时间复杂度未知,可以得到满分。
虽然我不会分析复杂度,但是实际上对于所有我能构造的
这一题目前一共有