CFCF2115C.Gellyfish and Eternal Violet
省选/NOI-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
在 Gellyfish 面前有 n 只怪物,编号从 1 到 n,第 i 只怪物的生命值为 hi。
Gellyfish 并不想杀死它们,但她想让这些怪物对自己不再构成威胁。因此,她希望把所有怪物的生命值都恰好降到 1。
现在,Gellyfish 拿着“泪水磨砺之剑”,准备攻击怪物 m 回合。每一回合:
- “泪水磨砺之剑”有概率 p 闪耀。
- Gellyfish 可以选择是否攻击:
- 如果 Gellyfish 不攻击,则什么都不会发生。
- 如果 Gellyfish 选择攻击且“泪水磨砺之剑”闪耀,则所有怪物的生命值都会减少 1。
- 如果 Gellyfish 选择攻击且“泪水磨砺之剑”没有闪耀,则 Gellyfish 可以选择其中一只怪物,使其生命值减少 1。
请注意,在 Gellyfish 决定是否攻击之前,她会知道剑是否闪耀。此外,当剑闪耀时,Gellyfish 只能对所有怪物进行攻击,不能只攻击其中一只怪物。
现在,Gellyfish 想知道,如果她在战斗中每一步都做出最优选择,最终达成目标的概率是多少。
输入格式
每组测试数据包含多个测试用例。第一行包含一个整数 t(1≤t≤100),表示测试用例的数量。
每个测试用例的第一行包含三个整数 n、m 和 p′(1≤n≤20,1≤m≤4000,0≤p′≤100),分别表示怪物的数量、攻击的回合数,以及“泪水磨砺之剑”闪耀的概率 p=100p′。
每个测试用例的第二行包含 n 个整数 h1,h2,…,hn(1≤hi≤400),表示每只怪物的生命值。
保证所有测试用例中 n 的总和不超过 100。
输出格式
对于每个测试用例,输出一个实数,表示 Gellyfish 达成目标的概率。
如果你的答案的绝对误差或相对误差不超过 10−6,则视为正确。
形式化地说,设你的答案为 a,标准答案为 b,当且仅当 max(1,∣b∣)∣a−b∣≤10−6 时,判为正确。
输入输出样例
输入#1
4 2 2 10 2 2 5 5 20 2 2 2 2 2 6 20 50 1 1 4 5 1 4 9 50 33 9 9 8 2 4 4 3 5 3
输出#1
0.910000 0.672320 0.588099 0.931474
说明/提示
在第一个测试用例中,Gellyfish 在第一回合无论剑是否闪耀都会选择攻击。
如果第一回合剑闪耀,则 Gellyfish 在第一回合攻击后就能达成目标。
否则,如果第一回合剑没有闪耀,她会在第一回合攻击第 1 只怪物。对于第二回合:
- 如果剑闪耀,由于第 1 只怪物在第一回合被攻击过,Gellyfish 无法达成目标。
- 否则,她可以攻击第 2 只怪物,从而达成目标。
因此,Gellyfish 达成目标的概率为 10%+(90%⋅90%)=91%。
在第二个测试用例中,Gellyfish 只会在第一次剑闪耀时选择攻击。可以发现,唯一无法达成目标的情况是 5 回合中剑从未闪耀。Gellyfish 达成目标的概率为 100%−(80%)5=67.232%。