链接:https://ac.nowcoder.com/acm/contest/894/C
来源:牛客网

题目描述

有一个箱子,开始时有n个黑球,m个蓝球。每一轮游戏规则如下:
第一步:奕奕有p的概率往箱子里添加一个黑球,有(1-p)的概率往箱子里添加一个蓝球。
第二步:华华随机从箱子里取出一个球。
华华喜欢黑球,他想知道k轮游戏之后箱子里黑球个数的期望。

输入描述:

输入五个整数n,m,k,a,b。
1<=n,m<=1e6,1<=k<=1e9
其中p=abab,且a<=b,0<=a<1e9+7,0<b<1e9+7

输出描述:

输出一个数表示k轮游戏后箱子里黑球个数的期望。
输出一个整数,为答案对1e9+7取模的结果。即设答案化为最简分式后的形式为abab,其中a和b互质。输出整数 x 使得bx≡a(mod 1e9+7)且0≤x<1e9+7。可以证明这样的整数x是唯一的。

示例1

输入

2 2 1 1 2

输出

2

示例2

输入

2 2 2 3 10

输出

184000003

题意:如上

思路:求期望题目,一遍是逆推,但是这个好像推不出?看了题解后,我推出来的式子和题解一样,但是过程貌似有点出入,后面再研究研究了。我的思路是,对于第i天的黑球期望 dp[i] = dp[i-1] + p*1 - (dp[i-1] + p*1)(m+n+1),直观上理解,第i天黑球期望等于前一天的期望数加上第一步取得黑球的期望 p*1 ,再减去第二步取出黑球的期望,注意到无论哪一轮,第二步的时候总球数一定是n+m+1,则随机取到黑球期望为 (dp[i-1] + p*1)/(n+m+1)*1。就可以推到dp[i]了。化简后可以用矩阵快速幂算,进一步化简后只需算一个等比数列,用快速幂推就可以了。

题解思路:

注意:本题学的东西还是挺多的,主要是逆元和模方面的细节,以前虽然知道但是没有做过,感觉还是不一样。含模运算过程如果有减法一定要(a-b)%mod = ((a%mod-b%mod)+mod)%mod,不然会出错。

#include<bits/stdc++.h>
#include<iostream>
#include<queue>
#include<cstring>
#include<math.h>
#include<algorithm>
#include<cstdio>
#include<map>
#include<stack>
#include<vector>
#define rep(i,e) for(int i=0;i<(e);++i)
#define rep1(i,e) for(int i=1;i<=(e);++i)
#define repx(i,x,e) for(int i=(x);i<=(e);++i)
#define pii pair<int,int>
#define X first
#define Y second
#define PB push_back
#define MP make_pair
#define mset(var,val) memset(var,val,sizeof(var))
#define scd(a) scanf("%d",&a)
#define scdd(a,b) scanf("%d%d",&a,&b)
#define scddd(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define IOS ios::sync_with_stdio(false);cin.tie(0)
typedef long long ll;
using namespace std;#ifdef LOCAL
template<typename T>
void dbg(T t){cout<<t<<" "<<endl;
}
template<typename T, typename... Args>
void dbg(T t, Args... args){cout<<t<<" ";dbg(args...);
}#else
#define dbg(...)
#endif // local
typedef long long ll;
const int inf = 0x3f3f3f3f;
const ll INF = 0x3f3f3f3f3f3f3f3fll;
const int mod = 1e9+7;
const int N = 1e4+10;
typedef long long ll;
#define K 137
const int maxn = 1e3+10;
const int maxm =4e5+10;ll qpow(ll x,ll n){ll res = 1;while(n){if(n % 2 == 1)res = res*x%mod;x  = x*x%mod;n /= 2;}return res;
}void work(){ll n,m,k,a,b;cin>>n>>m>>k>>a>>b;ll p = a*qpow(b,mod-2)%mod;ll s = (n+m)%mod*qpow(n+m+1,mod-2)%mod;ll cc = n*qpow(s,k)%mod;ll aa = p*(((s-qpow(s,k+1)%mod)+mod)%mod)%mod*qpow(((1-s)+mod)%mod,mod-2)%mod;//**注意cout<<(cc+aa)%mod<<endl;}int main()
{
#ifdef LOCALfreopen("in.txt","r",stdin);
#endif // LOCALIOS;work();return 0;
}
题解参考代码:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int mod=1e9+7;
ll pow1(ll a,ll b)
{ll r=1;while(b){if(b&1)r=r*a%mod;a=a*a%mod;b/=2;}return r;
}
int main()
{int n,m,k,a,b;scanf("%d%d%d%d%d",&n,&m,&k,&a,&b);ll p=1LL*a*pow1(b,mod-2)%mod;ll s=1LL*(n+m)*pow1(n+m+1,mod-2)%mod;ll ans=1LL*n*pow1(s,k)%mod+p*(s-pow1(s,k+1))%mod*pow1(1-s,mod-2)%mod;ans=ans%mod+mod;   //********注意printf("%lld\n",ans%mod);return 0;
}

牛客练习赛46-华华跟奕奕玩游戏(期望+逆元)相关推荐

  1. 牛客练习赛46 C 华华跟奕奕玩游戏 (期望,概率)(详解)

    链接:https://ac.nowcoder.com/acm/contest/894/C 来源:牛客网 华华跟奕奕玩游戏 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K ...

  2. 牛客练习赛46 B 华华送奕奕小礼物 (预处理前缀和,二分)

    链接:https://ac.nowcoder.com/acm/contest/894/B?&headNav=acm 来源:牛客网 华华送奕奕小礼物 时间限制:C/C++ 1秒,其他语言2秒 空 ...

  3. 牛客练习赛46 A 华华教奕奕写几何 (简单数学)

    链接:https://ac.nowcoder.com/acm/contest/894/A 来源:牛客网 华华教奕奕写几何 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K ...

  4. 最小生成树--牛客练习赛43-C

    牛客练习赛43-C 链接: https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 ​ 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 ...

  5. 牛客练习赛81 E. 小 Q 与函数求和 1( “简单莫比乌斯反演” ,欧拉函数性质)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 牛客练习赛81 E. 小 Q 与函数求和 1( "简单莫比乌斯反演" ) Prob ...

  6. 解题报告(一)C、(牛客练习赛41 F)简单数学题(数论 + FWT)(3.5)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  7. 牛客练习赛34 E little w and Digital Root(数位dp)

    title: 牛客练习赛34 E little w and Digital Root(数位dp) date: 2018-12-17 22:38:37 tags: 数位dp categories:ACM ...

  8. 牛客练习赛34 - C little w and Segment Coverage(思维、树状数组)

    title: 牛客练习赛34 - C little w and Segment Coverage(思维.树状数组) date: 2018-12-15 16:36:55 tags: [树状数组,思维] ...

  9. 牛客练习赛52 | C | [烹饪] (DP,裴蜀定理,gcd)

    牛客练习赛52 C 烹饪 链接:https://ac.nowcoder.com/acm/contest/1084/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 327 ...

  10. 牛客练习赛73 D 离别(线段树+右端点排序离线查询)

    牛客练习赛73 D 离别 思路: 对于每一个固定的右端点i,我们都找到一个区间(l,r)使得区间中的点为左端点时 里面最大的的种数为k. 这个可以用队列或者vector来维护. 然后我们对于q个查询, ...

最新文章

  1. nginx下的session一致性
  2. vue-cli 官方模板webpack-simple的npm run dev 与npm run bulid的一些问题
  3. 漫画|解读电气安全“十不准”
  4. 【技术综述】深度学习在自然语言处理中的应用发展史
  5. ARM中Steppingstone启动
  6. java integer valueof_对 Java Integer.valueOf() 的一些了解
  7. 开启一个新的命令行窗口
  8. XEIM 配置程序源代码
  9. 程序员常常会用到的几款文本编辑器
  10. 2019日历全年一张_蒙太奇手帐丨2019品牌日历合集,手帐素材最佳选择
  11. 桌面上计算机点击后,怎样设置电脑的鼠标点击后窗口(也就是桌面上点一下出来的窗口)为自己另类设计的个性窗口图案?求高手。...
  12. unicode字符集和utf-8编码
  13. IOC实现-Unity
  14. Android 与Js通信报Java Exception was raised during method Invocation错误,引发的惨案
  15. 各种加速卡 异构计算
  16. 更新操作先删除缓存后更新DB,还是先更新DB后删除缓存问题???
  17. (转)东方美人吉他谱及演奏(中川砂仁)
  18. 一个账号多路由器拨号失败服务器无响应,PPPoE拨号失败 PPPoE拨号失败服务器无响应怎么办?...
  19. A卡 HD5770(HD6770) Readon HD 5xxx 6xxx系列显卡黑苹果MOJAVE CATALINA QE/CI驱动教程
  20. python风控建模项目_像潘叔叔那样用半年时间学Python,有哪些书值得看?

热门文章

  1. c语言中的less函数,less的小白入门介绍
  2. linux将txt文件转化为raw,如何利用qemu-img工具将其它格式的镜像文件转换成VHD或RAW格式...
  3. Python下opencv使用笔记(二)(简单几何图像绘制)
  4. Android https 自签名和CA证书验证(基于OkHttp)
  5. 第002篇:易康(eCognition)中最佳分割尺度评价工具ESP2插件的详细使用方法
  6. 关于加速度传感器方面内容汇总
  7. 网络安全架构部署:Fail Closed,Fail Open,Fail safe,Fail over是什么意思?
  8. dct图像压缩c语言实现,DCT变换在图像压缩中的实现
  9. ubuntu下的opencv下载编译安装
  10. win10-yolov5环境搭建