首页 > 其他 > 详细

LOJ6587 WF2019 交通堵塞 CRT、bitset

时间:2019-05-25 23:32:32      阅读:141      评论:0      收藏:0      [点我收藏+]

传送门


首先设\(P = lcm(r_i + g_i)\),因为\(P \mid 2019!\),所以在\([0,2019!]\)里随机实数相当于在\([0,2019!)\)随机实数,相当于在\([0,P)\)内随机整数。

需要求出被每扇门关住的概率,不妨先算出通过前若干扇门的概率然后差分一下。

求出通过前\(i\)扇门的概率相当于\(i\)个模意义下区间的求交,可以做到\(O(NP_i)\)但是显然太慢。

我们考虑:当我们有两个模意义下的区间\(x \in [l_1,r_1] \mod P\)\(x \in [l_2 , r_2] \mod Q\)\(P \perp Q\),则由中国剩余定理可知,如果合并得到的模意义下的区间是\(x \in [L,R] \mod PQ\),那么\((R - L + 1) = (r_1 - l_1 + 1)(r_2 - l_2 + 1)\)。这提示着我们两个互质的数是独立的,可以独立计算概率。

同时如果\(P \mid Q\)或者\(Q \mid P\),也能快速进行合并。那么假如说我们的所有\(r_i + g_i\)都存在质数\(p\)和正整数\(k\)满足\(r_i + g_i = p^k\),那么我们可以将所有门扫过去,把所有\(p^k\)的门使用bitset合并在一起然后计算答案。

但是实际上并不是这样,所以我们考虑能否将所有模数转化为\(p^k\)的形式。我们考虑枚举\(a \in [0,X)\),将开始时间等于\(t = kX + a(k \in Z)\)的所有时间点放在一起做。在上面的做法中\(X = 1\),但是在这里显然不可行。注意到:\(kX + a \in [l,r] \mod p(p = r_i + g_i)\)满足条件只和\(k \mod \frac{p}{\gcd(p , X)}\)有关,我们只需要让所有\(\frac{p}{\gcd(p,X)}\)只存在一个质因子即可。暴枚可以求出最小的\(X = 2520\)

这样我们可以枚举\(k\)\([0 , \frac{p}{\gcd(p , X)})\)中的合法值(这可能不是一段区间,但是并没有什么关系),再跟上面的做法一样做就可以了。只需要较为精细的实现就可以做到\(O(100XN)\)的复杂度,加上bitset可以获得\(\frac{1}{w}\)的常数优化。

代码

LOJ6587 WF2019 交通堵塞 CRT、bitset

原文:https://www.cnblogs.com/Itst/p/10924475.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!