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

[BJOI2019]光线(递推) 题面 洛谷 题解 假装玻璃可以合并,假设前面若干玻璃的透光率是\(A\),从最底下射进去的反光率是\(B\),当前的玻璃的透光率和反光率是\(a,b\). 那么可以得到转移: \[A=A'\sum_{j=0}^\infty B'^j*b^j*a=\frac{A'a}{1-B'b}\] \[B=b+a\sum_{j=0}^\infty B'^j*b^j*a*B'=b+\frac{B'a^2}{1-B'b}\] 然后就做到线性了. #include<iostream…
题目链接: [BJOI2019]光线 设$F_{i}$表示从第$1$面玻璃上面向下射入一单位光线,穿过前$i$面玻璃的透光率. 设$G_{i}$表示从第$i$面玻璃下面向上射入一单位光线,穿过前$i$面玻璃的反光率. 那么可以推出: $F_{i}=F_{i-1}a_{i}\sum\limits_{k=0}^{+\infty}(G_{i-1}b_{i})^k$ $G_{i}=b_{i}+G_{i-1}a_{i}^2\sum\limits_{k=0}^{+\infty}(G_{i-1}b_{i})^…
题目大意:有一束光线要依次穿过$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^2…
题意 题目链接 分析 令 \(f_i\) 表示光线第一次从第一块玻璃射出第 \(i\) 块玻璃的比率. 令 \(g_i\) 表示光线射回第 \(i\) 块玻璃,再射出第 \(i\) 块玻璃的比率. 容易得到: \[\begin{cases}f_i=f_{i-1}a_i+f_{i-1}b_ig_i\\g_i=b_{i-1}a_i+b_{i-1}b_ig_i+a_{i-1}g_{i-1}a_i+a_{i-1}g_{i-1}b_ig_i\end{cases}\] 对于 (2) 式,移项可得 \[g_i…
传送门 先考虑\(n=1\)的情况不是输入数据都告诉你了吗 然后考虑\(n=2\),可以光线是在弹来弹去的废话,然后射出去的光线是个等比数列求和的形式,也就是\(x_1\sum_{i=1}^{\infty} d^i=x_1\frac{1}{1-d}\),然后弹回去的光线第一个光线就是\(b_i\),然后后面也是等比数列求和,算一下就好了 \(n>2\),我们做完\(n-1\)后,可以把刚刚算过的玻璃看成一块,因为已经知道会射出去多少以及弹回去多少,然后就变成了\(n=2\),那么递推做即可 我写…
看起来很麻烦,做起来并不难的题 以下设:$a_i=\frac{a_i}{100},b_i=\frac{b_i}{100}$ 显然,如果$b_i=0$的话,直接求$\Pi a_i$就是答案. 解决反射问题是这个问题的关键 我们显然可以认为一束光透过之后,可以等其他的光一起**透过干净** 再往后走. 这样就存在Dp的阶段了. 网上很多从“前i个整体透光率”“整体反光率”什么的,或者枚举反射次数,还要等比数列求和.其实不用这么麻烦. 设$f[i][1]$表示,一单位的光从玻璃i左边射过来,**最终透…
Problem loj3093 & x谷 题意概要:给定 \(n\) 块玻璃,每块玻璃有其折射比例与反射比例(折射比例+反射比例 不一定为 \(100\%\)),求从最上头打下一束光,有多少比例的光可以完全穿越 \(n\) 块玻璃 \(n\leq 5\times 10^5\) Solution 一眼线性高斯消元,但是我懒--物理题当然不要那么麻烦啦 由于考虑到这是物理模型,用物理思想考虑--合并玻璃 仅考虑合并两块玻璃,对于合并后的等价玻璃,需要算出其 从上往下与从下往上的反射透射率 共四个参数…
降智了…… 当你走头无路的时候就应该知道瞎搞一个DP: $p[i]$ 表示光射入第 $1$ 块玻璃时,从第 $i$ 块玻璃出去的光量. $q[i]$ 表示光射入第 $i$ 块玻璃时,从第 $i$ 块玻璃出去的光亮. 为什么是第 $i$ 块呢?因为我们最后只关注 $p[n]$,所以我们关注的反射都是前 $i$ 块射向第 $i+1$ 块(也就是 $q[i]$)和从第 $i+1$ 块射向前 $i$ 块(也就是 $b_{i+1}$). 初始状态 $p[1]=a_1,q[1]=b_1$.答案为 $p[n]…
题目大意:有$n$层玻璃,每层玻璃会让$a\%$的光通过,并把$b\%$的光反射.有一束光从左向右射过,问多少的光可以透过这$n$层玻璃 题解:事实上会发现,可以把连续的几层玻璃合成一层玻璃,但是要注意玻璃两侧的反射率可能是不一样的. 令$A$为前$i$层玻璃的透过率,$B$为前$i$层玻璃从右向左的反射率.$a$为第$i+1$层玻璃的透过率,$b$为第$i$层玻璃的反射率.那么前$i+1$层玻璃的透过率为$A'$,前$i+1$层玻璃从右向左的反射率为$B'$$$A'=Aa\sum_{i=0}^…
BJOI2019 题解 在更了在更了 P5319 [BJOI2019]奥术神杖 对\(V_i\)求个\(\ln\)变成了让平均数最大,显然套分数规划,然后ac自动机上面dp #include<bits/stdc++.h> #define il inline #define vd void typedef long long ll; il ll gi(){ ll x=0,f=1; char ch=getchar(); while(!isdigit(ch)){ if(ch=='-')f=-1; c…