#P2096. Collecting Bugs

    ID: 1097 传统题 1000ms 256MiB 尝试: 2 已通过: 1 难度: 10 上传者: 标签>Northeastern Europe 2004Northern Subregion、概率dp

Collecting Bugs

描述

Ivan 热衷于收集。与那些收集邮票、硬币或其他实物的人不同,他收集的是软件漏洞。每当 Ivan 拿到一个新程序时,他会将所有可能的漏洞分为nn类。每天,他都会在程序中恰好发现一个漏洞,并将该漏洞及其分类信息记录到电子表格中。当他在所有漏洞类别中都发现了至少一个漏洞时,他会称该程序“令人作呕”,并将电子表格发布到个人主页上,随后彻底忘记这个程序。

两家公司 Macrosoft 和 Microhard 竞争激烈。Microhard 希望降低某款 Macrosoft 程序的销量,于是雇佣 Ivan 来证明该程序“令人作呕”。然而,Ivan 遇到了一个复杂的问题:这款新程序有ss 个子组件,若要在每个子组件中找到所有类型的漏洞,耗时过长,无法在目标时间内完成。因此,Ivan 和 Microhard 达成了一项更简单的标准——Ivan 只需在每个子组件中至少发现一个漏洞,同时在每个漏洞类别中也至少发现一个漏洞即可。

Macrosoft 得知了这一计划,并希望估算 Ivan 将该程序称为“令人作呕”所需的时间。这一点非常重要,因为公司即将发布新版本,若能提前修正计划并加快发布速度,就没人会在意 Ivan 对旧版本可靠性的评价了。

在程序中发现的漏洞属于任何类别的概率均等,同样,漏洞出现在任何子组件中的概率也均等。任何一个漏洞不可能同时属于两个不同类别,也不可能同时出现在两个不同子组件中。程序中的漏洞数量近乎无限,因此即使已发现某类别某子组件的多个漏洞,发现该类别该子组件的新漏洞的概率也不会降低。

请计算 Ivan 将该程序称为“令人作呕”所需的平均工作时间(以 Ivan 的工作天数表示)。

输入

输入文件包含两个整数nns0<n,s1000)。s(0<n,s≤1000)。

输出

输出 Ivan 将该程序称为“令人作呕”所需的工作天数的期望值,精确到小数点后 4 位。

输入数据 1

1 2

输出数据 1

3.0000

来源

2004年东北欧北部赛区