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

终于在自己学过了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. 20155311《Java程序设计》实验五(网络编程与安全)实验报告

    20155311<Java程序设计>实验五(网络编程与安全)实验报告 一.实验内容及步骤 任务一: 编写MyBC.java实现中缀表达式转后缀表达式的功能 编写MyDC.java实现从上面 ...

  2. 20155319《Java程序设计》实验三(敏捷开发与XP实践)实验报告

    20155319<Java程序设计>实验三(敏捷开发与XP实践)实验报告 一.实验内容及步骤 (一)使用Code菜单 在IDEA中使用工具(Code->Reformate Code) ...

  3. 【LG2183】[国家集训队]礼物

    [LG2183][国家集训队]礼物 题面 洛谷 题解 插曲:不知道为什么,一看到这个题目,我就想到了这个人... 如果不是有\(exLucas\),这题就是\(sb\)题... 首先,若\(\sum_ ...

  4. Vue视图

    1. 基本模板语法 1.1 插值 文本 数据绑定最常见的形式就是使用“Mustache”语法 (双大括号) 的文本插值 v-text 指令也可以用于数据绑定,如果要更新部分的 textContent ...

  5. Karma与TSLint

    TSLint TSLint是一个可扩展的静态分析工具,用于检查TypeScript代码的可读性,可维护性和功能性错误.收到现代编辑和构建系统的广泛支持,并且可以使用您自己的路由,配置和格式化. 安装 ...

  6. charles基本使用文档

    Charles 主要的功能包括: 截取 Http 和 Https 网络封包. 支持重发网络请求,方便后端调试. 支持修改网络请求参数. 支持网络请求的截获并动态修改. 支持模拟慢速网络. Charle ...

  7. 在Office 365 的如何给管理员赋予查看所有人邮箱的权限的Powershell

    连接至Office365 的Powershell Get-MsolUser -UserPrincipalName admin@***.partner.onmschina.cn //Get-MsolUs ...

  8. 基于C#的机器学习--颜色混合-自组织映射和弹性神经网络

    自组织映射和弹性神经网络 自组织映射(SOM),或者你们可能听说过的Kohonen映射,是自组织神经网络的基本类型之一.自组织的能力提供了对以前不可见的输入数据的适应性.它被理论化为最自然的学习方式之 ...

  9. oozie的shell-action中加入hive脚本命令启动执行shell同时操作hive,抛异常Container killed on request. Exit code is 143 Container exited with a non-zero exit code 143

    使用oozie来调度操作,用shell的action执行命令,其中shell里包含着hive -e 操作执行时,oozie窗口报 WARN ShellActionExecutor: - SERVER[ ...

  10. 使用PYTHON解析Wireshark的PCAP文件

    PYTHON首先要安装scapy模块 PY3的安装scapy-python3,使用PIP安装就好了,注意,PY3无法使用pyinstaller打包文件,PY2正常 PY2的安装scapy,比较麻烦 f ...