题目大意:Alice 和 Bob 开始了递茶操作。一开始Alice 和 Bob
都有一个杯子里面装了𝑁吨的茶。现在每次 Alice 会等概率地随机向
垃圾桶里面倒入4𝐾, 3𝐾, 2𝐾或者𝐾吨的茶,并且如果 Alice 倒了𝑥吨的茶,Bob
就会向垃圾桶里面导入4𝐾 − 𝑥吨的茶。注意每次操作的时候 Alice 或者 Bob
的茶有可能不够多,这个时候就能倒多少到多少。现在问 Alice
在四种操作完全等概率的情况下,Alice 先把自己的茶倒光的概率加上 Alice 和
Bob 同时把茶倒光的概率的一半是多少。注意,Alice 和 Bob
每轮倒茶都是同时开始同时结束的
inlinedoubledfs(int n, int m) { if (n <= 0 && m <= 0) return0.5; if (n <= 0) return1.0; if (m <= 0) return0.0; if (g[n][m]) return f[n][m]; g[n][m] = true; for (int i = 1; i <= 4; ++ i) f[n][m] += 0.25 * dfs(n - i, m - 4 + i); return f[n][m]; }
inlinedoublecalc(int n, int k) { if (n/k >= N) return1.0; returndfs((n / k) + (n % k ? 1 : 0), (n / k) + (n % k ? 1 : 0)); }
signedmain() { int n, k; cin >> n >> k; printf ("%.6lf", calc(n, k)); return0; }