#arc055b. [arc055_b]せんべい
[arc055_b]せんべい
问题描述
AtCoDeer是一只喜欢米饼的鹿。现在,AtCoDeer注意到了高滨君的传闻,他会给AtCoDeer N片编号为1至N的米饼。由于编号大的米饼更大且更有价值,所以AtCoDeer决定一定要吃掉第N片米饼。然而,由于饱腹的限制,AtCoDeer只能吃最多K片米饼。
高滨君会事先将N片米饼重新排列,逐一按顺序给AtCoDeer。当AtCoDeer收到第i(1≤i≤N)片时,他会立即决定是否吃掉这片米饼。然而,如果他已经吃掉了K片米饼,那么他就不能再吃了。如果不吃的话,高滨君会吃掉这片米饼,因此AtCoDeer无法在之后吃到这片米饼。AtCoDeer看不出米饼的编号,但可以比较已经看到的(包括吃过的)所有米饼的大小。
高滨君给出米饼的顺序是随机的(从N!个排列中等概率选择),AtCoDeer事先不知道顺序。请计算在AtCoDeer采取最优策略的情况下,他最终能吃到编号为N的米饼的概率。
约束条件
输入
输入从标准输入中获取,具有以下格式。
输出
输出AtCoDeer在采取最优策略的情况下,能够最终吃到米饼的概率。输出的绝对误差或相对误差应小于或等于。
示例输入1
3 1
示例输出1
0.500000000000
以下策略是最优的:
- 不吃第一片。
- 如果第二片比第一片大,则吃第二片。
- 如果还可以吃(即没有吃第二片),则吃第三片。
那么,当米饼的顺序是1、3、2和2、1、3以及2、3、1时,都能吃到米饼3,所以概率是3/3! = 1/2。
示例输入2
17 17
示例输出2
1.000000000000
由于所有的米饼都能被吃掉,所以概率是1。
示例输入3
1000 10
示例输出3
0.984898795563