2019杭电多校第7场 K Kejin Player HDU 6656(数学推导)
题目链接: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(数学推导)相关推荐
- 杭电多校第七场 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 ...
- 2019杭电多校第9场1002 Rikka with Cake HDU6681
2019杭电多校第9场1002 Rikka with Cake HDU6681 题意:给你若干个点按上下左右切割平面,最后问平面内有几块被切割开来. 解法1:红黑树+思维+贪心 A:根据欧拉定理可以得 ...
- 【2019.08.21】2019杭电多校第十场
补题地址:http://acm.hdu.edu.cn/listproblem.php?vol=58 题号:6691-6701 1001: 1002: 1003:✅ 1004: 1005:✅ 1006: ...
- 2019 杭电多校第六场 题解
比赛记录 注意随机数据 ,1-n排列这种,一般都有啥暴力重构之类的方法,期望重构次数很少之类的 1005也是这样,因为n^2但只有n个值有数,所以就可以n^2logn 题解 1001 Salty Fi ...
- 2019杭电多校第三场 6608 Fansblog(威尔逊定理+miller_rabin素性测试)
Problem Description 传送门 Farmer John keeps a website called 'FansBlog' .Everyday , there are many peo ...
- 2019 杭电 多校第3场 1006 Fansblog (HDU 6608)
题目链接 题解: 用威尔逊定理变换,然后求逆元. 代码: #include <bits/stdc++.h> using namespace std; typedef long long l ...
- hdu 6656 2019杭电多校第7场 期望题
设f[i]为从i升级到i+1期望需要的金钱,由于每级都是能倒退或者升级到i+1,所以询问从l,r的期望金钱可以直接前缀和,那么推导每一级升级需要的期望钱也可以用前缀和推导 设sum[i]=f[1]+f ...
- 2019杭电多校第七场 HDU - 6656 Kejin Player 期望
题目链接:https://vjudge.net/problem/HDU-6656 题解: 维护一个前缀sum[i] : 从1到 i 的期望 第 i 到达 i + 1是:ai + (1 - r[i] / ...
最新文章
- 安装suricata
- 整活插件 炉石传说_炉石传说:一顿操作猛如虎,定睛一看原地杵,会长整活被死人抬走...
- 查看凭证更改记录的三种方式
- ElasticSearch探索之路(五)集群与分片:选举、动态更新、近实时搜索、事务日志、段合并
- 服务器向用户返回的状态码,常用的有:
- caffe框架翻译-理解(转载)
- Java 螺纹第三版 第三章数据同步 读书笔记
- 2017.9.8 线性代数 失败总结
- win10无法装载iso文件_win10镜像文件不能安装怎么办?win10镜像文件无法安装的解决教程...
- failed to read artifact descriptor for xx
- 数据结构期末复习(四)
- face landmark 人脸特征点检测
- 如何在中实现++中的splitterwnd的四分裂视图功能
- java毕业设计软件技术课程学习系统设计与实现源码+lw文档+mybatis+系统+mysql数据库+调试
- Houdini 官方HDA SideFX Labs 安装
- Transformer综述(A Survey on Vision Transformer) 阅读学习笔记(二)-- transformer在计算机视觉领域的发展和应用
- mac右键文件夹,选择打开方式
- mac添加应用程序到启动台_如何在Mac上启动应用程序
- 面试时问你对该公司有什么想法如何回答?
- 最全的项目部署+持续集成解决方案:Jenkins + git + docker