FJNUOJ1158(莫比乌斯反演)
2024-09-30 19:35:15
题目:给定n个数字a1...an。有m个询问,格式为L R X Y,意为求aL到aR之间与x的最大公因数为y的个数。
数据组数T<=20
1<=n,m<=1e5
1<=ai<=1e5
1<=L,R<=n;1<=X,Y<=1e5
分析:
考虑预处理出1~1e5所有数字的因子
然后就可以知道每个因子在1~n这n个位置的分布情况
对于一个询问(l,r,x,y)
就相当于求[l,r]之间公因数为y,[l,r]之间公因数为2y,[l,r]之间公因数为3y……等等这些做容斥,很容易就看出这满足经典的莫比乌斯反演
具体的F(n)表示[l,r]之间和x共有因数y的数字的个数,f(n)表示[l,r]之间和x的最大公约数位y的数字的个数
那么f(n)=Σμ(d/n)F(d)
那么F(d)怎么求呢,F(d)其实就是因数d在[l,r]中出现了几个,直接二分就行了
复杂度不好估计,但不会超过O(n根号n)
最新文章
- html 标签
- 楼主,可否发一份代码给我!QQ....
- Oracel基础知识
- ViewPager+PagerTabStrip实现页面的切换
- js调用刷新
- 分子量 (Molar Mass,ACM/ICPC Seoul 2007,UVa 1586)
- 【Unity Shaders】初探Surface Shader背后的机制
- gcc 安装
- Autel MaxiDAS DS708 Fatal Application Error illegal operation
- android 解析XML方式(三)
- 检查dns服务器是否可用
- codeforces Codeforces Round #345 (Div. 1) C. Table Compression 排序+并查集
- 深度探索va_start、va_arg、va_end
- mvc分页生成静态页,mvc生成静态页
- Crossing River poj1700贪心
- LB 负载均衡的层次结构(转)
- 迁移git
- django自制后台左侧导航代码
- How to emulate a Raspberry Pi on your PC
- CF767C Garland--树形dp