Code

A - The Fool
B - The World
C - Justice
D - The Moon
E - The Tower
F - The Hermit
H - Lovers
I - Strength

A - The Fool

整数分块统计一下

B - The World

根据题意模拟,考虑一下时差的坑点

C - Justice

有多种做法
一种比较方便统计的做法,排序后,从前往后枚举
最开始我们需要找1个1
如果1不存在,则找2个2,依次类推,如果某值不存在,则往后寻找两倍的该值加一
对于第一次寻找过的值,打算标记,然后再寻找一次
如果找不到,则无解

D - The Moon

简单的期望DP
dp[i]=p(y)+p((1.0y)(dp[min(i+20,1000ll)]+1))+(1.0p)(dp[min(i+15,1000ll)]+1)dp[i] = p*(y) + p*( (1.0 - y) * (dp[min(i+20,1000ll)]+1)) + (1.0 - p) * (dp[min(i+15,1000ll)] + 1)
dp[i]dp[i]表示从胜率(i/10)(i/10)%开始需要的期望步数 ,每次的结果有3种

  1. 没有获得奖金 p((1.0y)(dp[min(i+20,1000ll)]+1))p*( (1.0 - y) * (dp[min(i+20,1000ll)]+1))
  2. 获得奖金没有赢得比赛 (1.0p)(dp[min(i+15,1000ll)]+1)(1.0 - p) * (dp[min(i+15,1000ll)] + 1)
  3. 获得奖金且赢得比赛 p(y)1p*(y) * 1

E - The Tower

F - The Hermit

考虑左区间递增的情况,然后分类讨论一下即可

H - Lovers

待补

I - Strength

两种情况
一种只打对面非防守状态的怪,统计溢出伤害的最大值
另一种就是把对面怪全部打死
因为如果打不死对面的怪,对面并不会掉血 ,因此对于第二种情况贪心选取每个大于防守怪最小攻击的怪即可