题意:

一个游戏,有许多关,到下一关要花费金钱,做出尝试,有概率成功,若成功则到达下一关,若失败则停在此关或退回到前面某关,询问第l关到第r关的期望费用

题解:

显然,第r关到第l关的费用是dp[r]-dp[l]

那么如何算出dp数组呢?首先dp[1]=0,利用期望方程正推

假设i点,成功率为p,失败则跳到j,成功则跳到k,花费q,则期望方程为

dp[k]=dp[i]+p(q)+(1-p)(dp[k]-dp[j])

移项后递推即可

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef long long ll;
typedef pair<int, LL>P;
const int M = 4e5 * 4 + 5;
const LL mod = 1e9 + 7;
const LL lINF = 0x3f3f3f3f3f3f3f3f;
#define ls (rt<<1)
#define rs (rt<<1|1)
LL gcd(LL a, LL b) { return b ? gcd(b, a%b) : a; }
LL quickpow(LL a, LL b, LL mod)
{LL res = 1;while (b){if (b & 1)res = (res*a) % mod;a = (a*a) % mod;b >>= 1;}return res;
}
inline int read()
{int x = 0, f = 1;char ch = getchar();while (ch < '0' || ch > '9'){if (ch == '-')f = -1;ch = getchar();}while (ch >= '0' && ch <= '9'){x = 10 * x + ch - '0';ch = getchar();}return x * f;
}
inline ll readll()
{ll x = 0, f = 1;char ch = getchar();while (ch < '0' || ch > '9'){if (ch == '-')f = -1;ch = getchar();}while (ch >= '0' && ch <= '9'){x = 10 * x + ch - '0';ch = getchar();}return x * f;
}
int n, q;
LL r[M], s[M], x[M], a[M], dp[M];
int main()
{int t = read();while (t--){n = readll();q = readll();for (int i = 1; i <= n; i++){r[i] = readll();s[i] = readll();x[i] = readll();a[i] = readll();}dp[2] = quickpow(r[1], mod - 2, mod)*a[1] % mod*s[1] % mod;for (int i = 2; i <= n; i++){LL tmp = ((a[i] + (s[i] - r[i])*quickpow(s[i], mod - 2, mod) % mod*(dp[i] - dp[x[i]] + mod) % mod) % mod) % mod*s[i] % mod * quickpow(r[i], mod - 2, mod) % mod;dp[i + 1] = (dp[i] + tmp) % mod;}while (q--){int l, r;l = read();r = read();printf("%lld\n", (dp[r] - dp[l] + mod) % mod);}}
}

转载于:https://www.cnblogs.com/isakovsky/p/11349320.html

hdu多校第七场 1011 (hdu6656) Kejin Player 概率dp相关推荐

  1. 杭电多校第七场 1011 Kejin Player HDU(6656)

    杭电多校第七场 1011 Kejin Player 题意:给你N行,代表从i级有花费a[i]元的r[i]/s[i]的概率达到i+1级,剩下的概率中可能会到达x[i]级.然后询问从L级到R级的花费会是多 ...

  2. 2019杭电多校 第七场 Kejin Player 6656(求期望值)

    2019杭电多校 第七场 Kejin Player 6656(求期望值) 题目 http://acm.hdu.edu.cn/showproblem.php?pid=6656 题意 给你n,q.表示有n ...

  3. 2018 HDU多校第四场赛后补题

    2018 HDU多校第四场赛后补题 自己学校出的毒瘤场..吃枣药丸 hdu中的题号是6332 - 6343. K. Expression in Memories 题意: 判断一个简化版的算术表达式是否 ...

  4. HDU 2020 多校第七场 游记

    又是被 djq 带飞的一场 orz,终场 rk2,又是罚时被锤了 1001,1002 俩 hard 先略过,不会做 /ll 1003 这种数数神题被 djq 一眼秒了,我还能说什么-- 首先我们考虑合 ...

  5. 2019杭电多校第七场 HDU - 6656 Kejin Player 期望

    题目链接:https://vjudge.net/problem/HDU-6656 题解: 维护一个前缀sum[i] : 从1到 i 的期望 第 i 到达 i + 1是:ai + (1 - r[i] / ...

  6. 2019杭电多校第七场 Kejin Player HDU - 6656 (期望)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6656 题意:一种游戏,从i级升到i+1级,需要氪金a[i]RMB,有的概率成功,有1-的概率变成x[i ...

  7. 2019HDU多校第七场 HDU6656 Kejin Player H 【期望递归】

    一.题目 Kejin Player H 二.分析 因为在当前等级$i$,如果升级失败可能会退回到原来的某一等级$x$,相当于就是失败的期望就是$E + (Sum[i-1] - Sum[x-1]) + ...

  8. 2019杭电多校第七场 HDU - 6656 Kejin Player——概率期望

    题意 总共有 $n$ 层楼,在第 $i$ 层花费 $a_i$ 的代价,有 $pi$ 的概率到 $i+1$ 层,否则到 $x_i$($x_i \leq 1$) 层.接下来有 $q$ 次询问,每次询问 $ ...

  9. Swaps and Inversions hdu多校训练第二场 树状数组求逆序数+离散化

    http://acm.hdu.edu.cn/showproblem.php?pid=6318 交换相邻的元素,有几个逆序对,就交换几次使其变成顺序对 #include<bits/stdc++.h ...

最新文章

  1. 永辉选任新董事长及管理层 创始人张轩松:我和张轩宁没矛盾
  2. 性能调优工具类TimeStone
  3. cx_Freeze脚本实现--Python使用cx_Freeze编译可执行文件(exe,mac)
  4. 用sqlSessionFactoryBeanName而不用sqlSessionFactory的原因
  5. linux 视频学习
  6. 才博教育:AI口语学习平台上云
  7. 自动驾驶数据集_奥迪推出大型自动驾驶数据集A2D2
  8. 专访 Swin Transformer 作者胡瀚:面向计算机视觉中的「开放问题」
  9. mysql 数据库优化
  10. 机器人走正方形c语言代码,张西臣---机器人走正方形
  11. unity下载网页所有图片
  12. Eclipse的环境设置
  13. java万年历项目百度云_Java开发万年历
  14. 语言代码 与地区(Android多语言)
  15. 复利思维,您做到了吗?
  16. C实现iBeacon蓝牙测距
  17. python|教你用代码画“社会人”
  18. 03-能看懂代码,就是自己写不出来,怎么办?
  19. Delphi @ ^
  20. Nginx 监控模块

热门文章

  1. android 9 手机硬件性能,硬件 篇一:一加7 / 7pro与小米9的参数对比及云评测
  2. Docker daemon启动问题
  3. shell学习之查找当前目录下文件以及文件夹大小-'du'命令和'df'命令
  4. Oracle索引、视图、序列、同义词、事务、锁机制详解
  5. 计算机组成原理页表长度,清华计算机组成原理习题课课件习题课1-7.ppt
  6. 科普 | 什么是稀疏默克尔树多值证明
  7. 控制windows开关机代码
  8. Java Robot对象实现服务器屏幕远程监视(来自:JAVA-CN.COM)
  9. html假蓝屏死机源码,100秒内蓝屏死机的脚本源代码
  10. java test before_JUnit4中@Before、@After、@Test等注解的作用