book书 (期望dp)
来源:互联网 发布:大闹天宫化身进阶数据 编辑:程序博客网 时间:2024/06/11 03:21
book书
9.11
思路:
用E[x]表示抽第X本书期望花费的体力值,P[X]表示事件X发生的概率。
Ans=∑pi*Ei
=∑pi*(1+∑p[最后一次被抽到的时间更晚的书的数量])
=∑ pi*(1+∑pj/(pi+pj))
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#define LL long longusing namespace std;const LL mod = 1000000007LL;const int N = 100010;int n;LL p[N];LL inv(LL a){ register LL res = 1LL; register int idx = (int)mod - 2; for( ; idx; idx>>=1, a = (a * a) % mod){ if(idx & 1) res = (res * a) % mod; } return res;}int main() { freopen ("book.in", "r", stdin); freopen ("book.out", "w", stdout); scanf("%d", &n); for(register int i=1; i<=n; i++) { int x, y; scanf("%d%d", &x, &y); p[i] = x * inv(y) % mod; } LL ans = 0; for(register int i=1; i<=n; i++) { LL dep = 1; for(register int j=1; j<=n; j++) { if(i == j) continue; dep = (dep + 1LL * p[j] * (inv(p[i] + p[j]) % mod) % mod) % mod; //很长的时间之后,抽j书的次数比上抽i书的次数近乎=p[j]/p[i] //所以设抽j书的p[j]次,抽i书的p[i]次,总共抽了p[j]+p[i]次 //那么最后一次抽中j的p=p[j]/(p[i] + p[j]) } ans = (ans + p[i] * dep % mod) % mod;//i近乎是从上至下第dep本book } printf("%I64d", ans); return 0;}
阅读全文
0 0
- book书 (期望dp)
- hdu 4649 (期望dp)
- hdu-3853(dp+期望)
- zoj-3329(***期望+dp)
- poj2096 (dp求期望)
- HDU_5781_ATM_Mechine(概率期望dp)
- bzoj1419(期望与DP)
- [BZOJ3450]Easy(期望dp)
- [BZOJ4318]OSU!(期望dp)
- hdu 3853(期望dp)
- hdu 4405(期望dp)
- poj 2096(期望dp)
- hdu 5781(期望dp)
- bzoj 3450(期望dp)
- zoj 3640(期望dp)
- poj 3682(期望dp)
- bzoj 4318(期望dp)
- bzoj 3036(期望dp)
- Android手机获取相机权限终极大招(兼容国产手机小米华为魅族以及6.0以下系统)
- 修改oracle表空间下的数据文件dmp的名字
- Java NIO(1)
- java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.LoopTag
- 用maven 搭建 Spring boot工程
- book书 (期望dp)
- 如何在30天内在YouTube上搜索排名第一
- ubuntu14.04安装LaTex2017及TexStudio
- 微信公众帐号开发教程02-微信公众帐号的类型(普通和会议)
- php curl跨域头部
- OpenMP对于嵌套循环应该添加多少个parallel for
- 盛大游戏 信息安全试卷 2017校招
- 新主人翁精神读后感
- Eclipse的九个常用快捷命令