1001 Fxx and string
枚举和等比数列公比,但考虑到有可能是的形式,所以倒过来枚举一遍就可以了。
1002 Fxx and game
设表示将变为的最少步骤,如果,否则,其中。
用单调队列维护一下就好了。
时间复杂度。
1003 Fxx and tree
考虑从上往下贪心,要将整棵树翻白,有唯一的方案。于是我们只考虑翻了多少个正确的点。
设表示还有个正确的点没有翻需要的期望步数。注意到翻到一个错误的点后,必须要再翻一次这个点才能挽回。于是我们可以列出一个方程。
f_0=f_1+1,f_i=\frac{i}{n}f_{i-1}+\frac{n-i}{n}f_{i+1}+1,f_n=0
用高斯消元求出解就行了。每组数据复杂度。
1004 Fxx and factory
假设经过一轮操作后本来从左到右第个桶变为了第个,我们将个桶抽象为个点,并在所有的和中连一条边,那么我们一定会得到若干个环(包括自环)。
由第一类斯特林数可以证明当操作无限时,环的数量是级别的。又由于操作数量对于的数量是很大的且数据随机,所以我们可以得到在本题中环的数量是级别的。
对于每条的边,这条边上有若干操作,对于每条边我们记录两个量,表示这条边有没有操作,否则表示有, 表示这条边最后一个操作后所有操作的加数的和。
现在来考虑每一个桶,经过轮后的值,其实就是在图上的一个点经过条边,如果这条边的都为0,那么我们直接把这条边的相加即可,否则我们把最后一个的边之后的相加即可。
那么我们现在就可以对每一个环预处理出经过轮后的最大值,为环的长度,这个直接用数组记录就好了,当时,我们可以由和得出来。
查询的话直接扫每一个环就行了,总复杂度
Read full article from BestCoder Solution
No comments:
Post a Comment