在比赛的时候,被这个题目虐死了,这一周中每当我有空闲时间我就总是思索这个题目的解题方法。

终于在自己学过了mobius反演,并且看过别人写得解题思路后自己有了思路。

下面说说我的解题思路吧。

首先题目的意思很简单,给你n,m,p,问你能取出多少组有序对(x,y),使得gcd(x,y)的质因子的个数不超过p个(4看成有两个质因子)。

首先声明这个题目是mobius反演的内容。不会的先学会了再看下面的内容。

其实最先想到的肯定是和其他gcd统计问题差不多的思路啊,那就是先求mobius函数值,在求出它的和函数,在求答案的时候进行分块求解就OK了。总的时间复杂度是(n*log(n)+t*(sqrt(n)+sqrt(m)))),前面的时间是预处理的时间,显然不会超时,后面的是对每组进行求解的时间,由于进行了分块处理,所以时间复杂度降低到了log级别。(这个log级别可以这样理解:对于n不同的商其实最多只有sqrt(n)种)——不知道这样解释对不对哦。

下面就说说这个题目的特殊性吧,以前我们遇到的题目都是要你统计gcd为某一特定的数,或者为质数的值(比如说我上次发的那个PGCD),但是这个题目需要你求的是质因子数目不超过p个的数量,但是细细想来,发现其实大同小异(因为求质数相当于p==1)

下面就说说我的解题方法吧,首先声明方法是有参考自网上的神牛哦。

由于对于小于500000的数中,因子数最多的也只有18个,所以我们需要构造18个mobius函数,分别统计对应的不同的质因子数目的mobius函数值。

然后就是把函数值进行两次求和啦。

但是关键问题是怎么求出来mobius函数值呢?  这样是这个题目的关键解题方法所在。

其实我开始也不懂这个题目应该怎么做的,但是我看到有神牛的博客,忽然好想明白了一点什么。

首先在说这个问题之前,我想先说说上次我写过的那个PGCD。那个题目是要求gcd为质数的对数,我们的做法是枚举每一个数,看看它里面含有多少个不同的质因子,并且能由那些质数乘以另外一个数得到。上次说的是如果p=a*b,a,b为不同的质数,那么我们所取得那个质数可以是a,b中的任意一个,所以理论上来说有两种取法,取完之后,它本身还有一个质因子,所以它所对应的mobius函数值应该为负数。,就是这样判断出来的,如果p里面含有一个平方项的话,取出来的必定是那个平方项,于是只有一种取法,正负再由取完之后的那个数的不同的质因子数来决定。

回来看这个题目,如果我们已知某一个数还有A个不同的质因子数目,相同的质因子数目为B(2*2*2被视为2个相同的质因子数,2*2*3*3也被视为2对),显然,这个数所能够影响的mobius函数值为A-A+B(这里一定要搞清楚),同时它的影响系数为C(A,j-B)(j为mobius函数标号)(B即重复的因子一定要全部拿出来,否则函数值就为0,无影响)。

这样题目基本就被解决了,我也不想写了,今天被虐惨了,洗洗睡吧。晚安。

这个代码就不上了,自己写吧。

hdu mophues的更多相关文章

  1. hdu 4746 Mophues 莫比乌斯反演+前缀和优化

    Mophues 题意:给出n, m, p,求有多少对a, b满足gcd(a, b)的素因子个数<=p,(其中1<=a<=n, 1<=b<=m) 有Q组数据:(n, m, ...

  2. HDU 4746 Mophues (莫比乌斯反演应用)

    Mophues Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 327670/327670 K (Java/Others) Total ...

  3. HDU 4746 HDOJ Mophues 2013杭州网赛I题

    比赛的时候就预感到这题能出,但是会耗时比较多.结果最后是出了,但是有更简单的题没出. 是不是错误的决策呢?谁知道呢 题目意思: 定义f(x) = x分解质因数出来的因子个数 如 x = p0 * p0 ...

  4. HDU 4746 Mophues【莫比乌斯反演】

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4746 题意: 1≤x,y≤n , 求gcd(x,y)分解后质因数个数小于等k的(x,y)的对数. 分 ...

  5. Mophues HDU - 4746 (莫比乌斯反演)

    Mophues \[ Time Limit: 10000 ms\quad Memory Limit: 262144 kB \] 题意 求出满足 \(gcd\left(a,b\right) = k\), ...

  6. HDU 4746 (莫比乌斯反演) Mophues

    这道题看巨巨的题解看了好久,好久.. 本文转自hdu4746(莫比乌斯反演) 题意:给出n, m, p,求有多少对a, b满足gcd(a, b)的素因子个数<=p,(其中1<=a<= ...

  7. HDU 4746 Mophues 莫比乌斯反演

    分析: http://blog.csdn.net/acdreamers/article/details/12871643 分析参见这一篇 http://wenku.baidu.com/view/fbe ...

  8. hdu 4746 Mophues

    莫比乌斯反演.先初始化出所有数有多少个质因子和mobius.然后处理mob_sum[ i ][ j ],表示当公因子的因子个数小于等于 j 个的mobius前 i 项和.然后分块求和即可. 分块处理部 ...

  9. HDU 4746 Mophues(莫比乌斯反演)

    题意:求\(1\leq i \leq N,1\leq j \leq M,gcd(i,j)\)的质因子个于等于p的对数. 分析:加上了对质因子个数的限制. 设\(f(d):[gcd(i,j)=d]\) ...

随机推荐

  1. 20155223 2016-2017-2 《Java程序设计》第10周学习总结

    20155223 2016-2017-2 <Java程序设计>第10周学习总结 教材学习内容总结 Java Socket编程 网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向 ...

  2. 20155223 2006-2007-2 《Java程序设计》第4周学习总结

    20155223 2006-2007-2 <Java程序设计>第4周学习总结 教材学习内容总结 第六章 Java的继承方法与继承类相当于程序间的数值调用,当然还有程序间函数的调动使用. 继 ...

  3. mycp 补交作业

    老师好:我昨天做完时已经是11点多了,错过了提交时间,希望用此篇博客弥补一下我的过失. import java.io.; import java.lang.; import java.util.Sca ...

  4. 20155318 2016-2017-2 《Java程序设计》第一周学习总结

    20155318 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 上周总结 上周学习了一些大学的学习方法,比如知识分为为三种:元知识.软知识和硬知识,讲述技能 ...

  5. 20155331 2016-2017-2《Java程序设计》课程总结

    20155331 2016-2017-2<Java程序设计>课程总结 每周作业 预备作业1:新学期,新展望 预备作业2:游戏经验 第一周学习总结:大致浏览教材并提出问题 第二周学习总结:基 ...

  6. PostgreSQL的pg_stats学习

    磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL统计信息索引页     回到顶级页面:PostgreSQL索引页 对于pg_stas,说明文档在这里: http://w ...

  7. RHSCA模拟考试

    开始考试:桌面是个黑框子 点击reboot按钮,破解密码 开机成功,输入startx进入图形界面 不能复制,要在物理机用ssh root@172.25.0.11 远程连接,就可以复制粘贴了 * Hos ...

  8. windows下安装,配置redis以及可视化客户端redisClient的安装及基本使用

    一. Window 下安装 下载地址:https://github.com/MSOpenTech/redis/releases. Redis 支持 32 位和 64 位.这个需要根据你系统平台的实际情 ...

  9. XAF-物料管理信息工作日志

    前段时间已经开始了第一阶段验收了,客户方并未把重点放在业务流程上面,一直在调整一些界面问题.有点小纠结. 今天要调一下菜单位置. 没修改时,是这样的: 到了列表界面,会多一个全文检索出来. 后来,客户 ...

  10. python全栈开发-面向对象-进阶

    python_day_18 1,面向对象的三大特性是什么?继承,多态,封装2,什么是面向对象的新式类?什么是经典类?凡是继承object类都是新式类.凡是不继承object类都是经典类.3,面向对象为 ...