题目链接: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的更多相关文章

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

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

  2. [2019杭电多校第七场][hdu6655]Just Repeat

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6655 题意是说两个人都有一些带有颜色的牌,两人轮流出牌,但是不能出对面出过的颜色的牌,最后谁不能出牌谁 ...

  3. [2019杭电多校第七场][hdu6651]Final Exam

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6651 题意:n个科目,总共m分,通过一科需要复习花费科目分数+1分钟,在不知道科目分数的情况下,问最少 ...

  4. [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+ ...

  5. 升级降级(期望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级升级 ...

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

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

  7. 杭电多校第七场 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 ...

  8. 杭电多校第七场-J-Sequence

    题目描述 Let us define a sequence as belowYour job is simple, for each task, you should output Fn module ...

  9. hdu61272017杭电多校第七场1008Hard challenge

    Hard challenge Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others) ...

随机推荐

  1. fs.mkdir

    fs.mkdir(path[, mode], callback) 要求父目录必须存在 let fs = require('fs'); fs.mkdir('./c/b/a', res=>{ // ...

  2. VMmare下安装redhat

    一.虚拟机必须安装在自定义的文件夹下,虚拟硬盘文件必须存放在自定义路径下(避免中文) 二.安装时选择linux类型时必须选择red hat enterprise linux 5 64位 三.操作系统名 ...

  3. 绑定class -vue

    1.值为对象 :class = "{ 'text-red': isActive }" data () { return { isActive : true } } :class = ...

  4. Android PdfViewer案例使用

    今天按项目要求找了一个android的PDF控件,各种操作效果都非常好,在这里和大家分享一下. com.joanzapata.pdfview:android-pdfview  该PDF控件加载大存储的 ...

  5. Java动手动脑02

    一.平方数静方法: public class SquareInt { public static void main(String[] args) { int result; for (int x = ...

  6. SpringBoot中资源初始化加载的几种方式

    一.问题 在平时的业务模块开发过程中,难免会需要做一些全局的任务.缓存.线程等等的初始化工作,那么如何解决这个问题呢?方法有多种,但具体又要怎么选择呢? 二.资源初始化 1.既然要做资源的初始化,那么 ...

  7. ubantu apt-get install安装php及开展

    .安装php apt-get install libapache2-mod-php5 php5 报错 E: Package 'libapache2-mod-php5' has no installat ...

  8. IDEA集成java编程规范插件

    第一种:如图所示搜索 Alibaba Java Coding Guidelines(阿里巴巴) 安装完成后,重启idea,点击tools>阿里巴巴编程>编程规约扫描 即可

  9. token与安全

    http://ju.outofmemory.cn/entry/134189      关于 Token,你应该知道的十件事 https://blog.csdn.net/Fabulous1111/art ...

  10. 《SQL Server 2012 T-SQL基础》读书笔记 - 9.事务和并发

    Chapter 9 Transactions and Concurrency SQL Server默认会把每个单独的语句作为一个事务,也就是会自动在每个语句最后提交事务(可以设置IMPLICIT_TR ...