P4731 题解
题意
对于一个
思路
一个自然的想法就是记
考虑这个 dp 如何转移。首先最后一局很特殊,所以最后算答案的时候单独考虑即可。对于前面的局,枚举这一局的得分(包含奖励分),以及两次投掷的分数分别是什么。设这局的得分为
- 这一局是一个 strike:必须满足
x=10/11 ,且y\ge 10 。此时转移过后x 的限制没了,y 被减去了一个10 变成了x 的限制,又增加了一个y 的限制,所以dp_{i,j,x,y}\to dp_{i+1,j+d,y-10,d-10} 。 - 这一局是一个 spare:枚举第一局的得分
a ,则必须满足x=a/11 ,且y=10/21 。这次转移由于有两次投掷,所以x,y 的限制都没了。又增加了一个x 的限制,所以dp_{i,j,x,y}\to dp_{i+1,j+d,d-10,21} 。 - 其它情形:枚举两局的得分
a,b ,则必须满足x=a/11 ,且y=a+b/21 。由于没有奖励分了,所以必须有d=a+b 。此时dp_{i,j,x,y}\to dp_{i+1,j+d,11,21} 。
然后处理最后一局的情形,这里和前面转移的方式是类似的,直接按照题面里给出的最后一局的
注意到瓶颈在于普通转移的第三种情形需要枚举两个得分,但由于此时
代码