[2019杭电多校第七场][hdu6656]Kejin Player
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6656
题意为从i级花费a元有p的概率升到i+1级,有1-p的概率降到x级(x<i),查询从L级升到R级的花费期望。
菜鸡才知道期望是有可加性的QAQ,即1-5的期望==1-2的期望+2-5的期望。
如果明确这一点就可以比较轻松的推出转移方程.....阿勒?
感觉和我往常见得有点不一样啊QAQ。
按照以往的思路,我会设dp[i]为i到n的期望,则转移方程为$dp[i]=p*dp[i+1]+(1-p)*dp[x[i]]+a[i]$
然后....就没有然后了,只能暴力跑高斯消元了。
可是按照以往的套路来说,不是会有很棒的化简方式使得式子可以直接退出来吗。
所以去巨佬们的博客学习一番后回来搞了搞。
大致的思路是这样的,先设f[i]表示从第i级到第i+1级的期望,dp[i]表示从第1级到第i级的期望,对于f[i] ,有p的概率交钱直接变成i+1,有(1-p)的概率回到x级,那么回到x级后想要升级到i+1,需要dp[i]-dp[x]升回到i级,再+f[i]到i+1级,则转移方程为$f[i]=p*a[i]+(1-p)*(dp[i]-dp[x[i]]+f[i]+a[i])$
涨姿势了QAQ
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
typedef long long ll;
const int maxn = 5e5 + ;
const ll mod = 1e9 + ;
const ll qpow(ll a, ll b) {
ll ans = ;
while (b) {
if (b & )
ans = a * ans%mod;
a = a * a%mod;
b /= ;
}
return ans;
}
ll r[maxn], s[maxn], x[maxn], a[maxn], dp[maxn];
int main() {
int t;
scanf("%d", &t);
while (t--) {
int n, q;
scanf("%d%d", &n, &q);
for (int i = ; i <= n; i++)
scanf("%lld%lld%lld%lld", &r[i], &s[i], &x[i], &a[i]);
for (int i = ; i <= n; i++) {
ll p = r[i] * qpow(s[i], mod - ) % mod;
ll pp = qpow(p, mod - ) % mod;
ll f = (a[i] + ( + mod - p) % mod*(dp[i] + mod - dp[x[i]]) % mod) % mod*pp%mod;
dp[i + ] = (dp[i] + f) % mod;
}
while (q--) {
int l, r;
scanf("%d%d", &l, &r);
printf("%lld\n", (dp[r] - dp[l] + mod) % mod);
}
}
}
[2019杭电多校第七场][hdu6656]Kejin Player的更多相关文章
- 2019杭电多校第七场 HDU - 6656 Kejin Player——概率&&期望
题意 总共有 $n$ 层楼,在第 $i$ 层花费 $a_i$ 的代价,有 $pi$ 的概率到 $i+1$ 层,否则到 $x_i$($x_i \leq 1$) 层.接下来有 $q$ 次询问,每次询问 $ ...
- [2019杭电多校第七场][hdu6655]Just Repeat
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6655 题意是说两个人都有一些带有颜色的牌,两人轮流出牌,但是不能出对面出过的颜色的牌,最后谁不能出牌谁 ...
- [2019杭电多校第七场][hdu6651]Final Exam
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6651 题意:n个科目,总共m分,通过一科需要复习花费科目分数+1分钟,在不知道科目分数的情况下,问最少 ...
- [2019杭电多校第七场][hdu6646]A + B = C(hash)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6646 题意为求a*10x+b*10y=c*10z满足公式的任意一组解x,y,z. 因为c有可能会由a+ ...
- 升级降级(期望DP)2019 Multi-University Training Contest 7 hdu杭电多校第7场(Kejin Player)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6656 题意: 有 1~n 个等级,你现在是1级,求升到n级的花费期望.会给你n个条件(i~i+1级升级 ...
- 2019HDU多校第七场 HDU6656 Kejin Player H 【期望递归】
一.题目 Kejin Player H 二.分析 因为在当前等级$i$,如果升级失败可能会退回到原来的某一等级$x$,相当于就是失败的期望就是$E + (Sum[i-1] - Sum[x-1]) + ...
- 杭电多校第七场 1010 Sequence(除法分块+矩阵快速幂)
Sequence Problem Description Let us define a sequence as below f1=A f2=B fn=C*fn-2+D*fn-1+[p/n] Your ...
- 杭电多校第七场-J-Sequence
题目描述 Let us define a sequence as belowYour job is simple, for each task, you should output Fn module ...
- hdu61272017杭电多校第七场1008Hard challenge
Hard challenge Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others) ...
随机推荐
- NTC电阻Rt与温度T关系
NTC电阻Rt与温度T公式如下: Rt=10000*exp(3950*(1/(273.15+T)-1/(273.15+25))). 例:0摄氏度时,电阻为33620.6037214357 欧姆 Rt= ...
- Docker(三):Docker入门教程-CentOS Docker 安装
CentOS Docker 安装 Docker支持以下的CentOS版本: CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更高的版本 前提条件 目前,CentOS 仅发 ...
- 【NOIP2016提高A组8.12】通讯
题目 "这一切都是命运石之门的选择." 试图研制时间机器的机关SERN截获了中二科学家伦太郎发往过去的一条短信,并由此得知了伦太郎制作出了电话微波炉(仮). 为了掌握时间机器的技术 ...
- php array_keys()函数 语法
php array_keys()函数 语法 作用:返回包含数组中所有键名的一个新数组.直线电机选型 语法:array_keys(array,value,strict) 参数: 参数 描述 array ...
- ios input readonly失效(点击的时候会有光标出现)/禁止输入法弹出问题
苹果端用1,2,之后解决不了readonly失效问题(点击的时候会有光标出现)(且不方便用disabled的时候),就用3, 1, $("#appDateTime").foc ...
- TCP服务器并发编程构架:完成端口IOCP模式
windows下socket网络编程模式:IOCP 完成端口 1)IOCP异步事件的获取放到操作系统的网络驱动层来处理,实际上反而是降低了编程难度, 2)同时对于多线程的并发调度,也放到操作系统级别来 ...
- /etc/init.d# ./redis-server start
root@ubuntu:/etc/init.d# ll total drwxr-xr-x root root May : ./ drwxr-xr-x root root May : ../ -rwxr ...
- python值的引用传递和go语言的值传递
一:值传递 实参a 原本指向地址 1638212,代表1638212这个地址的值是3.在swap函数中,实参a将值拷贝给形参a,形参a此时也在内存中拥有地址,地址= xxxx,值为3,在所有的函数体内 ...
- PowerBI 的简单介绍
一 切片器 给我的感觉就是groupby,就是按照某个维度进行了分组,然后显示. https://www.jianshu.com/p/2e78bf342747 二 建模 https://zhuan ...
- gc模块
gc.collect()如何进行垃圾回收 https://www.cnblogs.com/franknihao/p/7326849.html