Codeforces 712E 转

原题:http://codeforces.com/problemset/problem/712/E

转/修改:http://www.cnblogs.com/DreamlessDreams/p/9030968.html

题意:

n 个赌场,第 i 个赌场的胜率为 Pi,在第 i 个赌场若取胜则到达第 i+1 个赌场,反之到达第 i−1 个赌场,定义统治赌场 L...R 为从赌场 LL 开始,从赌场 R+1结束且期间没有到达过 L 前面的赌场 (没有在赌场 L输过), q 次操作,修改一个赌场的胜率或者询问统治赌场 L...R的概率


我们定义 f(i)为从i走到目标地点的概率

显然当询问 (L,R)时有:

,f(L)为从L走到R+1的概率 

,f(L−1)=0,f(R+1)=1

我们要求的答案为f(L)

根据题意有L<=i<=R, 

iR+1的概率 = 到达下一场,从下一场i+1R+1的概率 + 输掉这场,退回并从i-1R+1的概率

即f(i)=Pif(i+1)+(1−Pi)f(i−1)

则 f(i)−f(i−1)=Pif(i+1)+(1−1−Pi)f(i−1)

=Pi(f(i+1)−f(i−1))

定义 g(i)=f(i)−f(i−1)

则有 g(i)=Pi(f(i+1)−f(i−1))

容易发现 g(L)=f(L)-f(L-1)=f(L)也就是所要求的答案

计算 g(i+1)+g(i)=f(i+1)−f(i)+f(i)−f(i−1)=f(i+1)−f(i−1)

又因为1/Pi*g(i)=f(i+1)−f(i−1) 因而有 g(i+1)=(1−Pi)/Pi*g(i)

根据 g 的定义有 L<=i<=R sigma(g(i))=f(R+1)−f(L−1)=1

我们又知道 g(i+1)  g(i)的比值关系,设为 ti=g(i+1)/g(i)

则有 g(L)∗(1+tL+tLtL+1+...+tL∗...∗tR)=1

计算括号内乘积就可以得到概率f(L)


猜你喜欢

转载自blog.csdn.net/wangyc123456/article/details/80333901
今日推荐