hdu多校第七场 1011 (hdu6656) Kejin Player 概率dp
题意:
一个游戏,有许多关,到下一关要花费金钱,做出尝试,有概率成功,若成功则到达下一关,若失败则停在此关或退回到前面某关,询问第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相关推荐
- 杭电多校第七场 1011 Kejin Player HDU(6656)
杭电多校第七场 1011 Kejin Player 题意:给你N行,代表从i级有花费a[i]元的r[i]/s[i]的概率达到i+1级,剩下的概率中可能会到达x[i]级.然后询问从L级到R级的花费会是多 ...
- 2019杭电多校 第七场 Kejin Player 6656(求期望值)
2019杭电多校 第七场 Kejin Player 6656(求期望值) 题目 http://acm.hdu.edu.cn/showproblem.php?pid=6656 题意 给你n,q.表示有n ...
- 2018 HDU多校第四场赛后补题
2018 HDU多校第四场赛后补题 自己学校出的毒瘤场..吃枣药丸 hdu中的题号是6332 - 6343. K. Expression in Memories 题意: 判断一个简化版的算术表达式是否 ...
- HDU 2020 多校第七场 游记
又是被 djq 带飞的一场 orz,终场 rk2,又是罚时被锤了 1001,1002 俩 hard 先略过,不会做 /ll 1003 这种数数神题被 djq 一眼秒了,我还能说什么-- 首先我们考虑合 ...
- 2019杭电多校第七场 HDU - 6656 Kejin Player 期望
题目链接:https://vjudge.net/problem/HDU-6656 题解: 维护一个前缀sum[i] : 从1到 i 的期望 第 i 到达 i + 1是:ai + (1 - r[i] / ...
- 2019杭电多校第七场 Kejin Player HDU - 6656 (期望)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6656 题意:一种游戏,从i级升到i+1级,需要氪金a[i]RMB,有的概率成功,有1-的概率变成x[i ...
- 2019HDU多校第七场 HDU6656 Kejin Player H 【期望递归】
一.题目 Kejin Player H 二.分析 因为在当前等级$i$,如果升级失败可能会退回到原来的某一等级$x$,相当于就是失败的期望就是$E + (Sum[i-1] - Sum[x-1]) + ...
- 2019杭电多校第七场 HDU - 6656 Kejin Player——概率期望
题意 总共有 $n$ 层楼,在第 $i$ 层花费 $a_i$ 的代价,有 $pi$ 的概率到 $i+1$ 层,否则到 $x_i$($x_i \leq 1$) 层.接下来有 $q$ 次询问,每次询问 $ ...
- Swaps and Inversions hdu多校训练第二场 树状数组求逆序数+离散化
http://acm.hdu.edu.cn/showproblem.php?pid=6318 交换相邻的元素,有几个逆序对,就交换几次使其变成顺序对 #include<bits/stdc++.h ...
最新文章
- 永辉选任新董事长及管理层 创始人张轩松:我和张轩宁没矛盾
- 性能调优工具类TimeStone
- cx_Freeze脚本实现--Python使用cx_Freeze编译可执行文件(exe,mac)
- 用sqlSessionFactoryBeanName而不用sqlSessionFactory的原因
- linux 视频学习
- 才博教育:AI口语学习平台上云
- 自动驾驶数据集_奥迪推出大型自动驾驶数据集A2D2
- 专访 Swin Transformer 作者胡瀚:面向计算机视觉中的「开放问题」
- mysql 数据库优化
- 机器人走正方形c语言代码,张西臣---机器人走正方形
- unity下载网页所有图片
- Eclipse的环境设置
- java万年历项目百度云_Java开发万年历
- 语言代码 与地区(Android多语言)
- 复利思维,您做到了吗?
- C实现iBeacon蓝牙测距
- python|教你用代码画“社会人”
- 03-能看懂代码,就是自己写不出来,怎么办?
- Delphi @ ^
- Nginx 监控模块
热门文章
- android 9 手机硬件性能,硬件 篇一:一加7 / 7pro与小米9的参数对比及云评测
- Docker daemon启动问题
- shell学习之查找当前目录下文件以及文件夹大小-'du'命令和'df'命令
- Oracle索引、视图、序列、同义词、事务、锁机制详解
- 计算机组成原理页表长度,清华计算机组成原理习题课课件习题课1-7.ppt
- 科普 | 什么是稀疏默克尔树多值证明
- 控制windows开关机代码
- Java Robot对象实现服务器屏幕远程监视(来自:JAVA-CN.COM)
- html假蓝屏死机源码,100秒内蓝屏死机的脚本源代码
- java test before_JUnit4中@Before、@After、@Test等注解的作用