【HAOI2011】Problem b(莫比乌斯反演+分块儿)
来源:互联网 发布:芒果tv网络电视下载 编辑:程序博客网 时间:2024/05/20 15:38
Problem
给定
Solution
转化模型
我们先把问题转化为求
Ans(b,d)−Ans(a−1,d)−Ans(b,c−1)+Ans(a−1,c−1)
然后,现在只需求
(1<=x<=n,1<=y<=m)的gcd(x,y)对数
基本思路:
f(k) 表示1<=x<=n,1<=y<=m ,且gcd(x,y)=k 的数对个数.g(k) 表示1<=x<=n,1<=y<=m ,且k|gcd(x,y) 的数对个数.显然,有
g(k)=∑d=1⌊nk⌋f(k∗d) 而
g(k)=⌊nk⌋∗⌊mk⌋ 所以有
f(k∗i)=g(k∗i)−∑j=2⌊nk∗i⌋f(k∗i∗j) 但这样的时间复杂度还不够优,
i<=|nk| ,所以单次询问时间复杂度为∑i=1nk(⌊nk∗i⌋−1)
此时,我们考虑莫比乌斯反演.
根据
g(k)=∑d=1⌊nk⌋f(k∗d)=⌊nk⌋∗⌊mk⌋ ⇓ f(k)=∑d=1⌊nk⌋μ(d)∗⌊nk∗d⌋∗⌊mk∗d⌋ 根据http://blog.csdn.net/algor_pro_king_john/article/details/78396194的“一个变形”即可以证明.
所以这样子,单次询问时间复杂度变为
O(nk) .再次考虑优化
可以发现,第一行的取值不会超过
2∗nk−−√ ,第二行取值不会超过2∗mk−−√ .可以运用分块,每次找到完全相同的一段进行计算.
处理一个
μ 的前缀和即可.单次询问时间复杂度变为
O(n√+m−−√)
阅读全文
0 0
- 【HAOI2011】Problem b(莫比乌斯反演+分块儿)
- BZOJ2301 [HAOI2011]Problem b(莫比乌斯反演)
- [BZOJ2301][HAOI2011]Problem b(莫比乌斯反演)
- [BZOJ2301][HAOI2011]Problem b(莫比乌斯反演)
- bzoj2301 [HAOI2011]Problem b(莫比乌斯反演)
- 【BZOJ2301】【HAOI2011】Problem B(莫比乌斯反演)
- [BZOJ2301][HAOI2011]Problem b(莫比乌斯反演)
- bzoj2301: [HAOI2011]Problem b 莫比乌斯反演
- [BZOJ 2301][HAOI2011] Problem b 莫比乌斯反演
- BZOJ2301: [HAOI2011]Problem b 莫比乌斯反演
- 2301: [HAOI2011]Problem b|莫比乌斯反演
- 【bzoj2301】[HAOI2011]Problem b 莫比乌斯反演
- bzoj 2301: [HAOI2011]Problem b 【莫比乌斯反演】
- BZOJ 2301: [HAOI2011]Problem b - 莫比乌斯反演
- Bzoj2301: [HAOI2011]Problem b:莫比乌斯反演
- [莫比乌斯反演] BZOJ 2301 [HAOI2011]Problem b
- Bzoj2301 [HAOI2011]Problem b 莫比乌斯反演
- BZOJ 2301: [HAOI2011]Problem b【莫比乌斯反演
- 添加沙箱技术测试者 邮件验证失败
- UVA 1646圈图的匹配
- tinyxml
- 登录界面中的验证码的使用
- POJ 1852 Ants
- 【HAOI2011】Problem b(莫比乌斯反演+分块儿)
- html css
- Tag 的常见用法
- c++Socket客户端 (vs2013)
- 大数据技术和应用
- Java直接内存详解
- mysql_备份与恢复
- 推荐:使用 Istio Service Mesh 管理微服务的具体例子(译)
- 【iOS】苹果IAP(内购)中沙盒账号使用注意事项