题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6656

题目大意:对于每一个等级,可以花ai元,有pi概率升级,如果升级失败就退到xi级,问从li级升到ri级的钱数期望

题目思路:比赛的时候已经想到思路了,结果由于推导太慌了出了很多小毛病,被队友先A了,赛后重新推导了一遍就出来了。

首先定义dp[i]为从1出发以后第一次到i的期望。

那么dp[i]升级到下一关要么是一次性成功,要么是失败一次以后成功,要么是失败两次后成功....依次类推。

由于当到达一个点x时,你接下来要发生的事情与之前做的事情没有任何关联,无论你用何种方式到达x,你接下来的待遇都会被一视同仁,也就是我当前的决策对于将来没啥影响。所以可以得到一个很重要的结论,那就是l到r的期望金钱就是1到r的期望金钱-1~l的期望金钱,因为到r需要的钱数-到l需要的钱数就是之间的钱数。然后我们就可以列出下列方程。以第x次成功升级为例,先花dp[i]到达i点,然后因为失败了x-1次,所以就需要(x-1)*a[i]元,然后每次失败你都得费劲千辛万苦回到i进行下一次冲刺,回来需要花dp[i]-dp[x]元,一共需要回来x-1次,再加上第x次成功的a[i]元,也就是

所以说列DP方程如下:

然后对于分别单拉出来化简,dp[i]的项直接用等比数列求和公式即可,其他两项都可以通过错位相减法很轻松(并不)地得到。化简就是繁琐点难度不大,实在有问题可以评论区问问菜鸡博主。

最后得到的式子是

以下是代码:

#include<bits/stdc++.h>using namespace std;
#define inf 0x3f3f3f3f
#define rep(i,a,b) for(ll i=a;i<=b;i++)
#define per(i,a,b) for(ll i=a;i>=b;i--)
#define ll long long
const ll MAXN = 5e5+5;
const ll MOD = 1e9+7;
ll dp[MAXN];
ll powmod(ll x,ll y){ll rst=1;for(;y;y>>=1){if(y&1)rst=rst*x%MOD;x=x*x%MOD;}return rst;
}
ll r,s,x,a;
ll n,q,c,d;
int main()
{ll t;scanf("%lld",&t);while(t--){memset(dp,0,sizeof(dp));scanf("%lld%lld",&n,&q);rep(i,1,n){scanf("%lld%lld%lld%lld",&r,&s,&x,&a);ll p=r*powmod(s,MOD-2)%MOD;dp[i+1]=(dp[i]+a*s%MOD*powmod(r,MOD-2)%MOD+((dp[i]-dp[x]+MOD)%MOD)*((1-p+MOD)%MOD)%MOD*s%MOD*powmod(r,MOD-2)%MOD)%MOD;}rep(i,1,q){scanf("%lld%lld",&c,&d);printf("%lld\n",(dp[d]-dp[c]+MOD)%MOD);}}return 0;
}

2019杭电多校第7场 K Kejin Player HDU 6656(数学推导)相关推荐

  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. 2019杭电多校第9场1002 Rikka with Cake HDU6681

    2019杭电多校第9场1002 Rikka with Cake HDU6681 题意:给你若干个点按上下左右切割平面,最后问平面内有几块被切割开来. 解法1:红黑树+思维+贪心 A:根据欧拉定理可以得 ...

  4. 【2019.08.21】2019杭电多校第十场

    补题地址:http://acm.hdu.edu.cn/listproblem.php?vol=58 题号:6691-6701 1001: 1002: 1003:✅ 1004: 1005:✅ 1006: ...

  5. 2019 杭电多校第六场 题解

    比赛记录 注意随机数据 ,1-n排列这种,一般都有啥暴力重构之类的方法,期望重构次数很少之类的 1005也是这样,因为n^2但只有n个值有数,所以就可以n^2logn 题解 1001 Salty Fi ...

  6. 2019杭电多校第三场 6608 Fansblog(威尔逊定理+miller_rabin素性测试)

    Problem Description 传送门 Farmer John keeps a website called 'FansBlog' .Everyday , there are many peo ...

  7. 2019 杭电 多校第3场 1006 Fansblog (HDU 6608)

    题目链接 题解: 用威尔逊定理变换,然后求逆元. 代码: #include <bits/stdc++.h> using namespace std; typedef long long l ...

  8. hdu 6656 2019杭电多校第7场 期望题

    设f[i]为从i升级到i+1期望需要的金钱,由于每级都是能倒退或者升级到i+1,所以询问从l,r的期望金钱可以直接前缀和,那么推导每一级升级需要的期望钱也可以用前缀和推导 设sum[i]=f[1]+f ...

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

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

最新文章

  1. 安装suricata
  2. 整活插件 炉石传说_炉石传说:一顿操作猛如虎,定睛一看原地杵,会长整活被死人抬走...
  3. 查看凭证更改记录的三种方式
  4. ElasticSearch探索之路(五)集群与分片:选举、动态更新、近实时搜索、事务日志、段合并
  5. 服务器向用户返回的状态码,常用的有:
  6. caffe框架翻译-理解(转载)
  7. Java 螺纹第三版 第三章数据同步 读书笔记
  8. 2017.9.8 线性代数 失败总结
  9. win10无法装载iso文件_win10镜像文件不能安装怎么办?win10镜像文件无法安装的解决教程...
  10. failed to read artifact descriptor for xx
  11. 数据结构期末复习(四)
  12. face landmark 人脸特征点检测
  13. 如何在中实现++中的splitterwnd的四分裂视图功能
  14. java毕业设计软件技术课程学习系统设计与实现源码+lw文档+mybatis+系统+mysql数据库+调试
  15. Houdini 官方HDA SideFX Labs 安装
  16. Transformer综述(A Survey on Vision Transformer) 阅读学习笔记(二)-- transformer在计算机视觉领域的发展和应用
  17. mac右键文件夹,选择打开方式
  18. mac添加应用程序到启动台_如何在Mac上启动应用程序
  19. 面试时问你对该公司有什么想法如何回答?
  20. 最全的项目部署+持续集成解决方案:Jenkins + git + docker

热门文章

  1. php微信公众平台session处理,php微信公众开发平台如何使用session
  2. 双11电商技术:不再谷满谷,坑满坑,看苏宁库存架构转变
  3. 力技艺法道,工匠师圣仙
  4. python输入输出拓展: 制作简单的exe程序(温度转换器)
  5. HBase初识之学生心得总结
  6. TI物料电子元器件芯片LM3402MM/NOPB
  7. matlab有一座小山,那里,有一座哭泣的小山作文1000字
  8. 线上应用故障排查之一:高CPU占用
  9. 【Vue】Vue中的data数据包含html标签元素的解决方法
  10. button标签以及post和get方法