Links there:LOJ-2145/SHOI2017
题意
B 君在玩一个游戏,这个游戏由 $N$ 个灯和 $N$个开关组成,给定这 $N$ 个灯的初始状态.下标为从 $1$ 到 $N$ 的正整数。
每个灯有两个状态亮和灭,我们用 $1$ 来表示这个灯是亮的,用 $0$ 表示这个灯是灭的,游戏的目标是使所有灯都灭掉。
但是当操作第 $i$ 个开关时,所有编号为 $i$ 的约数(包括 $1$ 和 $i$)的灯的状态都会被改变,即从亮变成灭,或者是从灭变成亮。
B 君发现这个游戏很难,于是想到了这样的一个策略,每次等概率随机操作一个开关,直到所有灯都灭掉。
这个策略需要的操作次数很多,B 君想到这样的一个优化。如果当前局面,可以通过操作小于等于 $k$ 个开关使所有灯都灭掉,那么他将不再随机,直接选择操作次数最小的操作方法(这个策略显然小于等于 $k$ 步)操作这些开关。
B 君想知道按照这个策略(也就是先随机操作,最后 小于等于 $k$ 步,使用操作次数最小的操作方法)的操作次数的期望。
这个期望可能很大,但是 B 君发现这个期望乘以 $N$ 的阶乘一定是整数,所以他只需要知道这个整数对 $100003$ 取模之后的结果。
思路
bike的题就是简洁干净.
考虑$N=K$的情况,发现只要贪心从大到小取就行啦,所以50分是送的!?
令$f(i)$表示还有$i$步达成目标的期望步数.
但是这样并不好计算啊!在算$f(i)$的时候并不能保证都知道$f(i-1),f(i+1)$
考虑差分.差分$g$的意义就是从第$i$步到第$i-1$步的期望.
最终把$g(i)$加起来就是答案啦
CODE
1 | //my vegetable has exploded. :( |