【牛客 - 368C】流星雨(概率dp,乘法逆元)

题干:

现在一共有n天,第i天如果有流星雨的话,会有wiwi颗流星雨。

第i天有流星雨的概率是pipi。

如果第一天有流星雨了,那么第二天有流星雨的可能性是p2+Pp2+P,否则是p2p2。相应的,如果第i−1 (i≥2)i−1 (i≥2)天有流星雨,第i天有流星雨的可能性是pi+Ppi+P,否则是pipi。

求n天后,流星雨颗数的期望。

输入描述:

 

第一行三个整数,n,a,b,其中n为天数,P=abP=ab

第二行n个整数wiwi。

接下来n行,每行两个整数,x,y,第i+2行表示第i天有流星雨的概率pi=xypi=xy。

1≤n≤105, 1≤a,b,x,y,wi≤109, pi+P≤1.01≤n≤105, 1≤a,b,x,y,wi≤109, pi+P≤1.0

输出描述:

 

一行一个整数,为答案对109+7109+7 取模的结果。

即设答案化为最简分式后的形式为abab,其中a和b互质。输出整数 x 使得bx≡a(mod 109+7)bx≡a(mod 109+7)且0≤x<109+70≤x<109+7。可以证明这样的整数x是唯一的。

 

示例1

输入

复制

2 1 3
1 1 
1 2
1 2

输出

复制

166666669

说明

 

第一天有流星雨第二天也有流星雨的概率是12×(12+13)12×(12+13),然后乘以流星雨的颗数2

 

第一天有流星雨第二天没有流星雨的概率是12×1612×16,乘以颗数1

第一天没有,第二天有的概率12×1212×12,乘以颗数1

第一天没有,第二天也没有的概率12×1212×12,乘以颗数0。

所以流星雨颗数的期望是7676

示例2

输入

复制

3 1 5
1 1 2
1 2
1 4
2 3

输出

复制

763333341

解题报告:

dp[i]代表第i天下雨的真正概率。可知,第i天的概率只与第i-1天有关,递推方程容易求出,最后再乘以权值w[i]。最后输出模意义下的解。

$T_i = T_{i - 1} \times (p_i + P) + (1 - T_{i - 1}) \times p_i$

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<ctime>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define ll long long
#define pb push_back
#define pm make_pair
#define fi first
#define se second
using namespace std;
const int MAX = 2e5 + 5;
ll p[MAX],w[MAX];
ll dp[MAX];//设dp[i]为第i天下雨的真正概率,由于第i天的概率只与第i-1天有关
const ll mod = 1e9+7;
ll qpow(ll a,ll k) {ll res = 1;while(k) {if(k&1) res = (res*a)%mod;k>>=1;a = (a*a)%mod;}return res;
}
int main()
{ll n,a,b,x,y;cin>>n>>a>>b;ll P = a*qpow(b,mod-2)%mod;for(int i = 1; i<=n; i++) scanf("%lld",w+i);for(int i = 1; i<=n; i++) {scanf("%lld%lld",&x,&y);p[i] = x*qpow(y,mod-2)%mod;}for(int i = 1; i<=n; i++) {dp[i] = dp[i-1] * (p[i]+P) %mod;dp[i] += (1-dp[i-1]+mod)*p[i]%mod;dp[i] %= mod; }ll ans = 0;for(int i = 1; i<=n; i++) {ans = (ans + dp[i]*w[i]%mod)%mod;}printf("%lld\n",ans);return 0 ;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/440866.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql workbench 无法编辑_MySQL Workbench编辑表数据是只读的

14 个答案:答案 0 :(得分&#xff1a;60)我假设桌子有一把主键。首先尝试运行unlock tables命令以查看是否修复了它。如果所有其他方法都失败了&#xff0c;您可以更改表以创建具有自动增量的新主键列&#xff0c;并希望能够修复它。一旦完成&#xff0c;您应该能够毫无问题地删…

【计蒜客 - 蓝桥训练】炮台实验(数学期望,期望dp)

题干&#xff1a; 蒜头君在玩一个战争模拟游戏&#xff0c;他有高度为 1,2,3,\ldots ,n1,2,3,…,n 的炮台各一个&#xff0c;他需要把这 nn 个炮台从左往右排成一行&#xff0c;并且炮口都朝向右边。 在这个游戏中&#xff0c;所有炮台发射的炮弹会摧毁前方所有高度比自己低的…

mysql本身主从_Mysql主从复制

Mysql环境准备#下载Mysqlwget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm如果报错: -bash: wget: 未找到命令安装插件 yum -y install wget安装mysql-community-release-el7-5.noarch.rpmsudo rpm -ivh mysql-community-release-el7-5.noarch.rpm安装Mys…

phison主控ps3111量产工具_从固态硬盘拆解看门道 深入解读闪存编号和主控容量...

一篇固态硬盘的评测是否有水平&#xff0c;不光是看测试跑分是否详细&#xff0c;更应有针对成绩的解读以及硬件拆解和结构上的分析。毕竟跑分大家都会跑&#xff0c;必须拿出其他人不知道的内存才能真正吸引读者。因为大多数固态硬盘拆解会失去保修&#xff0c;所以拆解是网友…

alot英文怎么读_【乐学】“原来如此”用英文怎么说?

英语中的“原来如此”则有几种不同的表达下面就让我们一起来看看吧&#xff01;I seeI see 作为最地道的表达&#xff0c;使用起来准没错。这是来自《柯林斯词典》的释义&#xff1a;You can say "I see" to indicate that you understand what someone is telling y…

特殊mac地址文档_Mac颜值秒杀Win10?五款神器让Win10化身macOS

微软在Win10上捣鼓已经不是一天两天了&#xff0c;可结果……还是难以令人满意&#xff0c;特别是不伦不类的UI&#xff01;其实Win10的底子还是不错的&#xff0c;新技术用了不少&#xff0c;外观也比之前更有颜值&#xff0c;但……总感觉缺了点什么&#xff01;有没有羡慕隔…

checkbox设置三种状态 qt_checkbox的三种状态处理

checkbox只有两种值&#xff1a;选中(checked)或未选中(unchecked)。它可以有任何值&#xff0c;但是表单提交时checkbox的值只能是checked或unchecked。它的默认值是unchecked&#xff0c;你可以在HTML中这样控制它&#xff1a;视觉上&#xff0c;checkbox有三种状态&#xff…

raft算法mysql主从复制_Etcd raft算法实现原理分析

1.1 主要概念要实现集群数据的一致性&#xff0c;节点在进行通信的时候必定需要遵守特定规则进行数据校验&#xff0c;而这些规则具体都是通过某些具有特定含义的属性来实现的。为了让对Raft 算法比较陌生的读者对算法的关键概念有一个初步认识&#xff0c;作者整理了算法中涉及…

【面试题 - 最大值减去最小值小于或等于 num 的子数组数量】滑动窗口

题干&#xff1a; 解题报告&#xff1a; 我们用两个指针&#xff08;i&#xff0c;j&#xff09;分别代表窗口的左边界和右边界&#xff0c;窗口也就是子数组&#xff1b; 用两个双端队列分别维护这个窗口的最大值和最小值&#xff1b; 当窗口扩大时&#xff0c;即j向右扩展时…

mysql根据用户名查询数据_MySQL 查询数据

MySQL 查询数据 MySQL 数据库使用SQL SELECT语句来查询数据。 你可以通过 mysql> 命令提示窗口中在数据库中查询数据,或者通过PHP脚本来查询数据。 语法 以下为在MySQL数据库中查询数据通用的 SELECT 语法: SELECT column_name,column_name FROM table_name [WHERE Clause…

quartz mysql索引_分布式系统中的定时任务全解(二)

在实际项目中&#xff0c;通常需要用到定时任务(定时作业)&#xff0c;spring框架提供了很好的实现。 1、 下载spring-quartz插件包 这里默认当前系统中是集成了spring框架的基本功能的。去网上下载spring定时器的jar包&#xff0c;这里用的是quartz-all-1.8.4.jar&#xff0c…

react div组件设置可点击不可点击_React面试全解

更新:收藏前点个赞亲&#xff0c;为啥我每次写的东西收藏都是赞的n倍&#xff01;&#xff01;花了一个月时间总结的React面试题 希望能帮助到你全文近万字建议保存仔细过一遍目录面试中常提的重要概念React生命周期ReduxRouter重要的方法面试中常提的重要概念1 什么是模块化是…

【牛客 - 185B】路径数量(离散数学,长度为k的路径数量,图)

题干&#xff1a; 给出一个 n * n 的邻接矩阵A. A是一个01矩阵 . A[i][j]1表示i号点和j号点之间有长度为1的边直接相连. 求出从 1 号点 到 n 号点长度为k的路径的数目. 输入描述: 第1行两个数n,k (20 ≤n ≤ 30,1 ≤ k ≤ 10) 第2行至第n1行&#xff0c;为一个邻接矩阵 …

【牛客 - 368D】动态连通块(并查集+bitset优化)

题干&#xff1a; 小T有n个点&#xff0c;每个点可能是黑色的&#xff0c;可能是白色的。 小T对这张图的定义了白连通块和黑连通块&#xff1a; 白连通块&#xff1a;图中一个点集V&#xff0c;若满足所有点都是白点&#xff0c;并且V中任意两点都可以只经过V中的点互相到达&a…

spark中读取json_【spark】文件读写和JSON数据解析

1.读文件通过 sc.textFile(“file://")方法来读取文件到rdd中。val lines sc.textFile("file://")//文件地址或者HDFS文件路径本地地址"file:///home/hadoop/spark-1.6.0-bin-hadoop2.6/examples/src/main/resources/people.json"HDFS文件地址"…

设python中有模块m、如果希望同时导入m中的所有成员_python-模块

先做几个练习题练习计算一个四乘四矩阵的所有元素的和&#xff0c;以及对角线之和#encodingutf-8a[[1,2,3,4],[2,5,2,3],[1,5,3,2],[5,3,2,5]]#encodingutf-8a[[1,2,3,4],[2,5,2,3],[1,5,3,2],[5,3,2,5]]total_sum0diagonal_sum0‘‘‘for i in a:print "i:",ifor j …

java 单例 饿汉式_Java-单例设计模式(懒汉与饿汉)

单例设计模式保证一个类在内存中只能有一个对象。思路&#xff1a;1)如果其他程序能够随意用 new 创建该类对象&#xff0c;那么就无法控制个数。因此&#xff0c;不让其他程序用 new 创建该类的对象。2)既然不让其他程序 new 该类对象&#xff0c;那么该类在自己内部就要创建一…

【牛客 - 369A】小D的剧场(线性dp)

题干&#xff1a; 链接&#xff1a;https://ac.nowcoder.com/acm/contest/369/A 来源&#xff1a;牛客网 题目描述 "我明白。" 作为这命运剧场永远的观众&#xff0c;小D一直注视着这片星光璀璨的舞台&#xff0c;舞台上&#xff0c;少女们的身姿演绎出了一幕幕…

java button 圆角_UIButton具有渐变边框和圆角

我想要的是一个自定义UIButton&#xff0c;它有一个渐变边框(只是边框是渐变)和圆角 . 我几乎到了我想去的地方&#xff0c;但是角落有问题 . 这是我目前拥有的&#xff1a;这是我的代码&#xff1a;override func viewDidLoad() {super.viewDidLoad()let gradient CAGradient…

java获取xlsx某列数据_Java读取Excel指定列的数据详细教程和注意事项

本文使用jxl.jar工具类库实现读取Excel中指定列的数据。jxl.jar是通过java操作excel表格的工具类库&#xff0c;是由java语言开发而成的。这套API是纯Java的&#xff0c;并不依赖Windows系统&#xff0c;即使运行在Linux下&#xff0c;它同样能够正确的处理Excel文件。支持Exce…