本文共 1148 字,大约阅读时间需要 3 分钟。
???????????????????????????????dp[i]???dp[i]?????i?????????n???????????????????i=n?????i=0???dp[0]???
?a=0??????k????k?0?b?????1/(b+1)??????[dp[i] = \frac{\sum_{k=1}^{b} (dp[i + k] + 1)}{b} + 1]???sum?dp[i+1]?dp[i+b]???
?a?0??????k????k?a?b?????1/(b-a+1)??????[dp[i] = \frac{\sum_{k=a}^{b} (dp[i + k] + 1)}{b - a + 1}]???sum?dp[i+a]?dp[i+b]???
double dp[maxn];int main() { int n, a, b; cin >> n >> a >> b; int len = b - a + 1; dp[n] = 0.0; double sum = 0.0; for (int i = n - 1; i >= 0; --i) { if (!a) { dp[i] = (sum + len) / (len - 1.0); sum -= dp[i + b]; sum += dp[i]; } else { dp[i] = sum / len + 1; sum -= dp[i + b]; sum += dp[i + a - 1]; } } printf("%.8lf", dp[0]);} ???????????maxn??????dp??????????dp[n]????0.0??????n?????????
??????i=n-1???????i=0????????????dp[n]????????????
??a=0?????a?0????k????????0?b??????????????????sum???sum?dp[i+1]?dp[i+b]???
??a?0?????a??0?????????a?b??????????????????sum???sum?dp[i+a]?dp[i+b]???
???????dp[0]??????0?????????
???????????????????????????????????????????????????????????
转载地址:http://khmh.baihongyu.com/