博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CF712E Memory and Casinos
阅读量:7232 次
发布时间:2019-06-29

本文共 1075 字,大约阅读时间需要 3 分钟。

\(f[i]\)为从\(i\)\(r+1\)且不走出区间的概率

\(f[i]=p[i]f[i+1]+(1-p[i])f[i-1]\)

\(f[i]-f[i-1]=p[i](f[i+1]-f[i-1])\)

\(f[r+1]=1,f[l-1]=0\)

\(g[i]=f[i]-f[i-1]\)

\(g[i]=p[i](g[i+1]+g[i])\)

\(g[i+1]=\frac{1-p[i]}{p[i]} g[i]\)

\(\sum_{i=l}^{r+1} g[i]=f[r+1]-f[l-1]=1\)

\(lis[l][r]=\sum_{i=l}^{r} \prod_{j=l}^i \frac{1-p[j]}{p[j]}\)

\(f[l]=g[l]=\frac{1}{lis[l][r]+1}\)

线段树维护前缀积、前缀和即可

#include"cstdio"#include"cstring"#include"iostream"#include"algorithm"using namespace std;const int MAXN=1<<17;int n,m;int ik[MAXN];double sum[2][MAXN<<1];struct rpg{double a,b;};int read(){    int x=0;char ch=getchar();    while(ch<'0'||'9'
>1; build(i,l,mid),build(i|1,mid+1,r); return;}void cchg(int k,double v){ sum[0][k]=sum[1][k]=v;k>>=1; while(k){ int i=k<<1; sum[0][k]=sum[0][i]*sum[0][i|1]; sum[1][k]=sum[1][i]+sum[0][i]*sum[1][i|1]; k>>=1; }return;}rpg cask(int k,int l,int r,int le,int ri){ if(le<=l&&r<=ri) return (rpg){sum[0][k],sum[1][k]}; int i=k<<1,mid=l+r>>1; if(le<=mid&&mid

转载于:https://www.cnblogs.com/AH2002/p/10297729.html

你可能感兴趣的文章
ros 安装教程
查看>>
使用charles抓包https,配置了证书,还是乱码的解决方案
查看>>
Javascript的this用法
查看>>
解决nginx 504 Gateway Time-out的一些方法
查看>>
SQL游标循环执行(又遇到了,记录一下吧)
查看>>
jQuery上注册函数的方法
查看>>
不要将@Autowired注解用于static方法
查看>>
关于达内培训的名企定制班
查看>>
Routing with restify and socket.io in node
查看>>
立体测距
查看>>
关于离线下载的一些免费的网站
查看>>
开发netfilter的一些坑
查看>>
java中map的clear和new性能对比
查看>>
macbook 备份系统
查看>>
klish 安装与使用
查看>>
Django实战(18):提交订单
查看>>
PHP时间戳函数总结
查看>>
开发自定义JSF组件(1) HelloWorld
查看>>
设计模式学习——策略模式:模拟鸭子应用
查看>>
lucene4.7 分词器(三)
查看>>