Pecco是一名宝可梦训练家,今天他和他的朋友Index进行宝可梦对战。
一只宝可梦有六项能力值:HP、物攻,物防,特攻,特防,速度。此外宝可梦具有1到2种属性。
因为Pecco和Index都只带了一只50级的宝可梦,所以我们把他们的对战过程简化如下:
首先,速度较快的一方打出招式,之后两只宝可梦轮流打出招式(保证双方的速度不同)。招式分为物理招式和特殊招式,并具有固定的属性、威力和命中率。使用招式后,先按照命中率计算能否命中,如果命中,可以使对方受到伤害(HP降低),伤害按以下公式计算:

其中:
,否则k1 = 1
。对于具有两个属性的宝可梦,分别计算属性相克加成然后相乘,例如使用冰属性的招式攻击飞行+龙属性的宝可梦时,k2 = 2 × 2 = 4。一个特殊规则是,如果k2 = 0,那么伤害将直接为0,而不会按照上面的公式计算。 | 一般 | 格斗 | 飞行 | 毒 | 地面 | 岩石 | 虫 | 幽灵 | 钢 | 火 | 水 | 草 | 电 | 超能力 | 冰 | 龙 | 恶 | 妖精 | |
| 一般 | 1× | 1× | 1× | 1× | 1× | 1⁄2× | 1× | 0× | 1⁄2× | 1× | 1× | 1× | 1× | 1× | 1× | 1× | 1× | 1× |
| 格斗 | 2× | 1× | 1⁄2× | 1⁄2× | 1× | 2× | 1⁄2× | 0× | 2× | 1× | 1× | 1× | 1× | 1⁄2× | 2× | 1× | 2× | 1⁄2× |
| 飞行 | 1× | 2× | 1× | 1× | 1× | 1⁄2× | 2× | 1× | 1⁄2× | 1× | 1× | 2× | 1⁄2× | 1× | 1× | 1× | 1× | 1× |
| 毒 | 1× | 1× | 1× | 1⁄2× | 1⁄2× | 1⁄2× | 1× | 1⁄2× | 0× | 1× | 1× | 2× | 1× | 1× | 1× | 1× | 1× | 2× |
| 地面 | 1× | 1× | 0× | 2× | 1× | 2× | 1⁄2× | 1× | 2× | 2× | 1× | 1⁄2× | 2× | 1× | 1× | 1× | 1× | 1× |
| 岩石 | 1× | 1⁄2× | 2× | 1× | 1⁄2× | 1× | 2× | 1× | 1⁄2× | 2× | 1× | 1× | 1× | 1× | 2× | 1× | 1× | 1× |
| 虫 | 1× | 1⁄2× | 1⁄2× | 1⁄2× | 1× | 1× | 1× | 1⁄2× | 1⁄2× | 1⁄2× | 1× | 2× | 1× | 2× | 1× | 1× | 2× | 1⁄2× |
| 幽灵 | 0× | 1× | 1× | 1× | 1× | 1× | 1× | 2× | 1× | 1× | 1× | 1× | 1× | 2× | 1× | 1× | 1⁄2× | 1× |
| 钢 | 1× | 1× | 1× | 1× | 1× | 2× | 1× | 1× | 1⁄2× | 1⁄2× | 1⁄2× | 1× | 1⁄2× | 1× | 2× | 1× | 1× | 2× |
| 火 | 1× | 1× | 1× | 1× | 1× | 1⁄2× | 2× | 1× | 2× | 1⁄2× | 1⁄2× | 2× | 1× | 1× | 2× | 1⁄2× | 1× | 1× |
| 水 | 1× | 1× | 1× | 1× | 2× | 2× | 1× | 1× | 1× | 2× | 1⁄2× | 1⁄2× | 1× | 1× | 1× | 1⁄2× | 1× | 1× |
| 草 | 1× | 1× | 1⁄2× | 1⁄2× | 2× | 2× | 1⁄2× | 1× | 1⁄2× | 1⁄2× | 2× | 1⁄2× | 1× | 1× | 1× | 1⁄2× | 1× | 1× |
| 电 | 1× | 1× | 2× | 1× | 0× | 1× | 1× | 1× | 1× | 1× | 2× | 1⁄2× | 1⁄2× | 1× | 1× | 1⁄2× | 1× | 1× |
| 超能力 | 1× | 2× | 1× | 2× | 1× | 1× | 1× | 1× | 1⁄2× | 1× | 1× | 1× | 1× | 1⁄2× | 1× | 1× | 0× | 1× |
| 冰 | 1× | 1× | 2× | 1× | 2× | 1× | 1× | 1× | 1⁄2× | 1⁄2× | 1⁄2× | 2× | 1× | 1× | 1⁄2× | 2× | 1× | 1× |
| 龙 | 1× | 1× | 1× | 1× | 1× | 1× | 1× | 1× | 1⁄2× | 1× | 1× | 1× | 1× | 1× | 1× | 2× | 1× | 0× |
| 恶 | 1× | 1⁄2× | 1× | 1× | 1× | 1× | 1× | 2× | 1× | 1× | 1× | 1× | 1× | 2× | 1× | 1× | 1⁄2× | 1⁄2× |
| 妖精 | 1× | 2× | 1× | 1⁄2× | 1× | 1× | 1× | 1× | 1⁄2× | 1⁄2× | 1× | 1× | 1× | 1× | 1× | 2× | 2× | 1× |
表示17到20之间的随机整数(包含边界)。Pecco和Index的对战地点选在白银山,这里终年下冰雹,每个回合结束后(双方轮流打出一个招式后),双方都会受到伤害:
,其中hp表示该宝可梦的初始HP。为了简化题目,我们假设冰属性的宝可梦也会受到伤害,这与游戏的设定不同。
直到一方HP减少到0或更低,则该方落败。如果两方同时倒下,认为速度较快的一方落败。
假设Pecco和Index都很聪明,每回合都会令他们的宝可梦打出使自己获胜概率最高的招式。试求出 Pecco的胜率。
整个输入文件共12行,前6行为Pecco的宝可梦的描述,后6行为Index的宝可梦的描述。
每个宝可梦的描述的第一行包含6个正整数( ≤ 500),表示它的HP、物攻,物防,特攻,特防和速度。
接下来一行包含一个整数n(
),表示该宝可梦属性的数量。然后是n个属性字符串,表示该宝可梦的属性。
接下来四行分别描述该宝可梦的四个技能。每行包含两个正整数p和h(p ≤ 300, h ≤ 100),表示威力是p、命中率是
。然后是一个属性字符串t。再然后是一个字符串Physical或Special,Physical表示这是物理招式,Special表示这是特殊招式。
属性字符串的取值包括:"Normal", "Fire", "Fighting", "Water", "Flying", "Grass", "Poison", "Electric", "Ground", "Psychic", "Rock", "Ice", "Bug", "Dragon", "Ghost", "Dark", "Steel", "Fairy"。
输出一行一个实数,表示Pecco的胜率。如果你的答案与评测机的答案的绝对误差在10 - 4之内,则会被认为是正确的。
145 90 135 150 110 80 2 Electric Steel 110 70 Electric Special 90 100 Electric Special 80 100 Steel Special 150 90 Normal Physical 143 85 85 145 135 100 2 Psychic Fairy 80 100 Fairy Special 90 100 Psychic Special 80 100 Ghost Special 85 100 Normal Physical
1.000000
1 100 100 100 100 105 1 Dragon 250 90 Normal Special 240 100 Normal Special 40 100 Normal Special 40 100 Normal Physical 112 100 100 100 100 100 1 Dragon 100 100 Normal Special 100 100 Ice Special 100 100 Fairy Special 100 100 Dragon Special
0.225000
| Name |
|---|


