日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發(fā)布時間:2023/12/10 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【牛客 - 368C】流星雨(概率dp,乘法逆元) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題干:

現(xiàn)在一共有n天,第i天如果有流星雨的話,會有wiwi顆流星雨。

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

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

求n天后,流星雨顆數(shù)的期望。

輸入描述:

?

第一行三個整數(shù),n,a,b,其中n為天數(shù),P=abP=ab

第二行n個整數(shù)wiwi。

接下來n行,每行兩個整數(shù),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

輸出描述:

?

一行一個整數(shù),為答案對109+7109+7?取模的結(jié)果。

即設答案化為最簡分式后的形式為abab,其中a和b互質(zhì)。輸出整數(shù)?x 使得bx≡a(mod?109+7)bx≡a(mod?109+7)且0≤x<109+70≤x<109+7。可以證明這樣的整數(shù)x是唯一的。

?

示例1

輸入

復制

2 1 3 1 1 1 2 1 2

輸出

復制

166666669

說明

?

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

?

第一天有流星雨第二天沒有流星雨的概率是12×1612×16,乘以顆數(shù)1

第一天沒有,第二天有的概率12×1212×12,乘以顆數(shù)1

第一天沒有,第二天也沒有的概率12×1212×12,乘以顆數(shù)0。

所以流星雨顆數(shù)的期望是7676

示例2

輸入

復制

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

輸出

復制

763333341

解題報告:

dp[i]代表第i天下雨的真正概率。可知,第i天的概率只與第i-1天有關,遞推方程容易求出,最后再乘以權值w[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 ; }

?

總結(jié)

以上是生活随笔為你收集整理的【牛客 - 368C】流星雨(概率dp,乘法逆元)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。