题目大意:有一束光线要依次穿过$n$块玻璃。

第i块玻璃的透射率为$a_i$,反射率为$b_i$。

问你有多少光能最终穿过所有玻璃。

数据范围:$n≤5\times 10^5$,答案对$998244353$取模。

我们考虑暴力把前$i-1$块玻璃看做一块玻璃,我们计算出了这块玻璃的透射率为$a$,反射率为$b$。

假设当前射过来的光线为$x$,第$i$块玻璃的透射率为$A$,反射率为$B$。

我们考虑强行打表:

第一次穿过玻璃i的光线量为$Ax$。

第二次为$ABbx$

第三次为$AB^2b^2x$

.....

以此类推。

考虑到$Bb$是小于$1$的,根据等比数列求和公式,最终能穿过玻璃$i$的光线总量为:

$X=xA\times\dfrac{Bb}{1-Bb}$

我们考虑如何更新$a$和$b$。

我们按照上面强行打表的方式打一个表,发现:

$newa=Aa\times\dfrac{Bb}{1-Bb}$

$newb=B+A^2b \times\dfrac{Bb}{1-Bb}$

直接处理就行了,复杂度$O(n\log MOD)$

 #include<bits/stdc++.h>
#define L long long
#define MOD 1000000007
#define I(x) pow_mod(x,MOD-2)
using namespace std;
L pow_mod(L x,L k){L ans=;for(;k;k>>=,x=x*x%MOD) if(k&) ans=ans*x%MOD; return ans;} int main(){
L a=,b=,x=,I100=I();
int n; cin>>n;
while(n--){
L A,B; scanf("%lld%lld",&A,&B);
A=A*I100%MOD; B=B*I100%MOD;
L Bb=B*b%MOD;
Bb=I(-Bb+MOD)%MOD;
x=x*A%MOD*Bb%MOD;
L newa=A*a%MOD*Bb%MOD;
L newb=(B+A*A%MOD*b%MOD*Bb)%MOD;
a=newa; b=newb;
}
cout<<x<<endl;
}

【BJOI2019】光线 模拟的更多相关文章

  1. [BJOI2019]光线(递推)

    [BJOI2019]光线(递推) 题面 洛谷 题解 假装玻璃可以合并,假设前面若干玻璃的透光率是\(A\),从最底下射进去的反光率是\(B\),当前的玻璃的透光率和反光率是\(a,b\). 那么可以得 ...

  2. [BJOI2019]光线——递推

    题目链接: [BJOI2019]光线 设$F_{i}$表示从第$1$面玻璃上面向下射入一单位光线,穿过前$i$面玻璃的透光率. 设$G_{i}$表示从第$i$面玻璃下面向上射入一单位光线,穿过前$i$ ...

  3. [BJOI2019]光线[递推]

    题意 题目链接 分析 令 \(f_i\) 表示光线第一次从第一块玻璃射出第 \(i\) 块玻璃的比率. 令 \(g_i\) 表示光线射回第 \(i\) 块玻璃,再射出第 \(i\) 块玻璃的比率. 容 ...

  4. luogu P5323 [BJOI2019]光线

    传送门 先考虑\(n=1\)的情况不是输入数据都告诉你了吗 然后考虑\(n=2\),可以光线是在弹来弹去的废话,然后射出去的光线是个等比数列求和的形式,也就是\(x_1\sum_{i=1}^{\inf ...

  5. [BJOI2019] 光线

    看起来很麻烦,做起来并不难的题 以下设:$a_i=\frac{a_i}{100},b_i=\frac{b_i}{100}$ 显然,如果$b_i=0$的话,直接求$\Pi a_i$就是答案. 解决反射问 ...

  6. 题解-BJOI2019 光线

    Problem loj3093 & x谷 题意概要:给定 \(n\) 块玻璃,每块玻璃有其折射比例与反射比例(折射比例+反射比例 不一定为 \(100\%\)),求从最上头打下一束光,有多少比 ...

  7. [BJOI2019]光线(DP)

    降智了…… 当你走头无路的时候就应该知道瞎搞一个DP: $p[i]$ 表示光射入第 $1$ 块玻璃时,从第 $i$ 块玻璃出去的光量. $q[i]$ 表示光射入第 $i$ 块玻璃时,从第 $i$ 块玻 ...

  8. [洛谷P5323][BJOI2019]光线

    题目大意:有$n$层玻璃,每层玻璃会让$a\%$的光通过,并把$b\%$的光反射.有一束光从左向右射过,问多少的光可以透过这$n$层玻璃 题解:事实上会发现,可以把连续的几层玻璃合成一层玻璃,但是要注 ...

  9. BJOI2019 题解

    BJOI2019 题解 在更了在更了 P5319 [BJOI2019]奥术神杖 对\(V_i\)求个\(\ln\)变成了让平均数最大,显然套分数规划,然后ac自动机上面dp #include<b ...

随机推荐

  1. 大数据入门到精通9-真正得wordcount

    本章节实现一个真正得wordcount 得spark程序. 一.从本地获得一个数据集 val speechRdd= sc.parallelize(scala.io.Source.fromFile(&q ...

  2. 【Django】HTTP status code must be an integer.

    刚刚出现这个问题,还以为是表单提交或者什么网络错误 结果发现是自己的低级错误写了 HttpResponse(request,'sigin_result2.html',context)这个根本不能渲染模 ...

  3. react官方脚手架搭建项目

    1.全局安装 npm install -g create-react-app 2. app后面还要给项目文件命名 create-react-app //是全局命令来创建react项目 3.然后按照提示 ...

  4. android 平台 java和javascript 通信问题 A WebView method was called on thread 'JavaBridge'.

      java.lang.RuntimeException: java.lang.Throwable: A WebView method was called on thread 'JavaBridge ...

  5. 设计模式 工厂模式 使用shared_ptr

    参考http://blog.csdn.net/calmreason/article/details/50903729 所有产品继承同一基本类 由工厂保存基类指针 产生各类产品 代码 // 002.cp ...

  6. Spring 的属性注入

    一.注入方式 (1)set方法注入 (2)构造函数注入 (3)p名称空间注入 (4)spel注入 二.复杂类型注入

  7. ABP框架系列之五十四:(XSRF-CSRF-Protection-跨站请求伪造保护)

    Introduction "Cross-Site Request Forgery (CSRF) is a type of attack that occurs when a maliciou ...

  8. nginx unit的初探

    安装介绍: https://www.oschina.net/p/nginx-unit 可以看到,unit还是很强大的,居然特么都支持go 还有python 在/etc/yum.repos.d/unit ...

  9. Localization

    Localization (using Histogram Filters) 定位指的是在传感器和移动之间来回的迭代,使得能够保持跟踪目标对象的位置.方向和速度. 这篇将写一个程序来实施定位,与GPS ...

  10. Nextday 参数化单元测试(测试用例)设计

    一.首先简单描述一下下载试题及配置试题的过程 配置环境:安装Eclipse.JDK(1.7).及考试插件 (net.mooctest....*.jar)等: 登录系统:运行Eclipse: [Mooc ...