CSP模拟50联测12 T2 赌神

CSP模拟50联测12 T2 赌神

题面与数据规模

Ps:超链接为衡水中学OJ。

思路

s u b t a s k 2 subtask2 subtask2

由于 x i x_i xi较小,考虑 dp。

假设一开始球的颜色为红和蓝,设 d p [ i ] [ j ] dp[i][j] dp[i][j] 为剩 i i i 个红球, j j j 个蓝球时可获得的最大筹码数。

如果不同球掉落所获得的筹码不同,那么肯定会掉落最少筹码的那一堆球。所以保证各堆获得筹码相同时最优。

设蓝球堆放 x x x个筹码,红球堆放 y y y个筹码,则有:
d p [ i ] [ j ] = 2 x ∗ d p [ i − 1 ] [ j ] = 2 y ∗ d p [ i ] [ j − 1 ]    ( n = 2 ) dp[i][j]=2x*dp[i-1][j]=2y*dp[i][j-1] \ \ (n=2) dp[i][j]=2xdp[i1][j]=2ydp[i][j1]  (n=2)

易得每次把筹码投完比不投优。可得:
y = 1 − x x ∗ d p [ i − 1 ] [ j ] = ( 1 − x ) d p [ i ] [ j − 1 ] y=1-x\\ x*dp[i-1][j]=(1-x)dp[i][j-1] y=1xxdp[i1][j]=(1x)dp[i][j1]
x x x 得: x = d p [ i ] [ j − 1 ] d p [ i − 1 ] [ j ] + d p [ i ] [ j − 1 ] x=\frac{dp[i][j-1]}{dp[i-1][j]+dp[i][j-1]} x=dp[i1][j]+dp[i][j1]dp[i][j1]

所以
d p [ i ] [ j ] = 2 x ∗ d p [ i − 1 ] [ j ] = 2 d p [ i ] [ j − 1 ] d p [ i − 1 ] [ j ] d p [ i ] [ j − 1 ] + d p [ i − 1 ] [ j ] dp[i][j]=2x*dp[i-1][j]=\frac{2dp[i][j-1]dp[i-1][j]}{dp[i][j-1]+dp[i-1][j]} dp[i][j]=2xdp[i1][j]=dp[i][j1]+dp[i1][j]2dp[i][j1]dp[i1][j]

s u b t a s k 3 subtask3 subtask3

任然考虑 n = 2 n=2 n=2 的情况,设 f [ i ] [ j ] = d p [ i ] [ j ] 2 i + j f[i][j]=\frac{dp[i][j]}{2^{i+j}} f[i][j]=2i+jdp[i][j]

d p [ i ] [ j ] dp[i][j] dp[i][j] 通过 s u b t a s k 2 subtask2 subtask2 中的方程化简,得:
f [ i ] [ j ] = f [ i − 1 ] [ j ] f [ i ] [ j − 1 ] f [ i ] [ j − 1 ] + f [ i − 1 ] [ j ] f[i][j]=\frac{f[i-1][j]f[i][j-1]}{f[i][j-1]+f[i-1][j]} f[i][j]=f[i][j1]+f[i1][j]f[i1][j]f[i][j1]

同时取倒数,并裂项得:
1 f [ i ] [ j ] = f [ i ] [ j − 1 ] + f [ i − 1 ] [ j ] f [ i − 1 ] [ j ] f [ i ] [ j − 1 ] = 1 f [ i ] [ j − 1 ] + 1 f [ i − 1 ] [ j ] \frac{1}{f[i][j]}=\frac{f[i][j-1]+f[i-1][j]}{f[i-1][j]f[i][j-1]}=\frac{1}{f[i][j-1]}+\frac{1}{f[i-1][j]} f[i][j]1=f[i1][j]f[i][j1]f[i][j1]+f[i1][j]=f[i][j1]1+f[i1][j]1
不难发现 f [ i ] [ j ] f[i][j] f[i][j] 为在二维平面内由 ( 0 , 0 ) (0,0) (0,0) 走向 i , j i,j i,j 的方案数,所以 f [ i ] [ j ] = ( i + j i ) f[i][j]=\dbinom{i+j}{i} f[i][j]=(ii+j)

s u b t a s k 4 subtask4 subtask4

其实 n > 2 n>2 n>2 时也有上述性质,那么 f ( x 1 , x 2 , ⋯   , x n ) f(x_1,x_2,\cdots,x_n) f(x1,x2,,xn) n n n 维平面内从 ( 0 , 0 , 0 , ⋯   , 0 ) (0,0,0,\cdots,0) (0,0,0,,0) 走到 ( x 1 , x 2 , ⋯   , x n ) (x_1,x_2,\cdots,x_n) (x1,x2,,xn) 的方案数。

那么 f ( x 1 , x 2 , ⋯   , x n ) = ( ∑ i = 1 n x i x n ) ∗ ( ∑ i = 1 n − 1 x i x n − 1 ) ∗ ⋯ ∗ ( x 1 x 1 ) f(x_1,x_2,\cdots,x_n)=\dbinom{\sum_{i=1}^n x_i}{x_n}*\dbinom{\sum_{i=1}^{n-1}x_i}{x_{n-1}}*\cdots*\dbinom{x_1}{x_1} f(x1,x2,,xn)=(xni=1nxi)(xn1i=1n1xi)(x1x1)

展开,得:
f ( x 1 , x 2 , ⋯   , x n ) = ∑ i = 1 n x i x n ! ∑ i = 1 n − 1 x i ∗ ∑ i = 1 n − 1 x i x n − 1 ! ∑ i = 1 n − 2 x i ∗ ⋯ ∗ 1 f(x_1,x_2,\cdots,x_n)=\frac{\sum_{i=1}^n x_i}{x_n!\sum_{i=1}^{n-1}x_i}*\frac{\sum_{i=1}^{n-1} x_i}{x_{n-1}!\sum_{i=1}^{n-2}x_i}*\cdots*1 f(x1,x2,,xn)=xn!i=1n1xii=1nxixn1!i=1n2xii=1n1xi1

发现每一项的分子与后一项的分母都存在共同部分,再次化简,得:

f ( x 1 , x 2 , ⋯   , x n ) = ( ∑ i = 1 n x i ) ! ∏ i = 1 n x i ! f(x_1,x_2,\cdots,x_n)=\frac{(\sum_{i=1}^n x_i)!}{\prod_{i=1}^n x_i!} f(x1,x2,,xn)=i=1nxi!(i=1nxi)!

于是答案为 n x 1 + x 2 + ⋯ + x n f ( x 1 , x 2 , ⋯   , x n ) \frac{n^{x_1+x_2+\cdots+x_n}}{f(x_1,x_2,\cdots,x_n)} f(x1,x2,,xn)nx1+x2++xn

你可能感兴趣的:(c++,动态规划,算法)