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

终于在自己学过了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. 20155231 实验二 Java面向对象程序设计

    20155231 java实验一 Java开发环境的熟悉 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程: 完成实验.撰写实验 ...

  2. 20155321 2016-2017-2 《Java程序设计》第九周学习总结

    20155321 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 厂商在实现JDBC驱动程序时,依方式可将驱动程序分为四种类型: JDBC-OD ...

  3. Oracle下建立dblink时的权限问题

    如果用普通用户,如果没授权,是无法建立dblink的: [oracle@oracle000 ~]$ sqlplus gao/gao lines) SQL Production :: Copyright ...

  4. 半个小时教你写一个装(bi)逼(she)之地图搜租房

    半个小时教你写一个装(bi)逼(she)之地图搜租房 首先需要一个Python3环境,怎么准备我就不多说了,实在不会的出门右转看一下廖雪峰老师的博客. HTML部分 代码来自:高德API+Python ...

  5. cogs1533 [HNOI2002]营业额统计

    cogs1533 [HNOI2002]营业额统计 啦啦啦啦 不维护区间的平衡树题都是树状数组+二分练手题! 不会的参考我的普通平衡树的多种神奇解法之BIT+二分答案 和上一篇博文完全一样2333 另外 ...

  6. L013-linux基础正则表达式手把手实战讲解小节

    L013-linux基础正则表达式手把手实战讲解小节 这么一看又有10天没更新博客了,最近也一直在学就是时间比较闲散,再加上做上次老师留的十多道题,所以时间比较紧张,本来做完题准备直接先看L014讲解 ...

  7. Entity Framework中执行Sql语句

           如果想在EF框架中执行Sql语句,其实很简单,EF里面已经提供了相关的方法(此处使用的EF为EF4.1版本).        EF中提供了两个方法,一个是执行查询的Sql语句SqlQue ...

  8. 初识JMM

    目录 what is JMM? JMM变量存储结构 JMM三大特性 原子性 可见性 有序性 java 堆栈 静态存储 栈式存储 堆式存储 JVM是啥 参考<Inside JVM> what ...

  9. Jenkins+git+Nginx

    1.Jenkins 一.tomcat安装 1.下载JDK和Tomcat //通过wget下载 wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomca ...

  10. v-model 双向数据绑定

    通过v-model指令可以实现双向数据绑定 HTML部分: <div id="app"> <input type="text" v-model ...