题意:从1~1000,000的每个自然数质因子分解,不同因子的个数作为其f 值,比如12=2*2*3,则f(12)=2。将100万个数转成他们的f值后变成新的序列seq。接下来T个例子,每个例子一个询问区间seq[L,R]。问该子序列中任意两个不同下标的数,他们的GCD值最大为多少?

思路:

(1)质因子分解,用筛法先将质数先全部出来。

(2)对每个自然数求其f值,即将其质因子分解后的不同因子个数,作为seq序列。

(3)扫一遍seq,用另一个数组记录下标i之前有多少个1、2、3、4...。因为seq序列中最大的数不超过10,所以可以统计,以方便能在O(1)内得到一个区间内有多少个值为x的元素。

(4)对于每个询问L和R,将所有元素装入新的序列中,准备求GCD。注意:相同数字不必超过2个,即新序列中的元素顶多出现2次。

#include <bits/stdc++.h>
using namespace std;
const int N=;
vector<int> prime;
bool seq[N];
int cnt[N];
int fval[N][]; void pre_cal()
{
memset(seq,,sizeof(seq));
memset(cnt,,sizeof(cnt));
memset(fval,,sizeof(fval)); for(int i=; i*i<N; i++) //所有质数都是false;
{
if(!seq[i]) continue;
for(int j=i*i; j<N; j+=i) seq[j]=;
} for(int i=; i<N; i++) if(seq[i]) prime.push_back(i); for(int i=; i<N; i++) //求f值
{
int t=i;
for(int j=; j<prime.size()&& prime[j]<i && t!=; j++)
{
if( seq[t] ) //若是质数,不用再求了
{
cnt[i]++;
break;
} if( t%prime[j]== ) cnt[i]++; //是因子
while( t%prime[j]== ) t/=prime[j]; //去掉该因子
}
} for(int i=; i<N; i++)
{
for(int j=; j<; j++) fval[i][j]=fval[i-][j];
fval[i][cnt[i]]++;
} } vector<int> val;
int cal(int L,int R)//处理询问
{
val.clear();
for(int i=; i>; i--)
{
if( fval[R][i]-fval[L-][i]> )
{
val.push_back(i);
val.push_back(i);
}
else if( fval[R][i]-fval[L-][i]== )
val.push_back(i);
}
int ans=;
for(int i=; i<val.size(); i++)
{
for(int j=i+; j<val.size(); j++)
ans=max(ans,__gcd(val[i],val[j]));
}
return ans;
}
int main()
{
freopen("input.txt", "r", stdin);
pre_cal();
int t, L, R;
cin>>t;
while(t--)
{
scanf("%d%d",&L,&R);
printf("%d\n",cal(L,R));
}
return ;
}

AC代码

HDU 5317 RGCDQ (质数筛法,序列)的更多相关文章

  1. hdu 5317 RGCDQ(前缀和)

    题目链接:hdu 5317 这题看数据量就知道需要先预处理,然后对每个询问都需要在 O(logn) 以下的复杂度求出,由数学规律可以推出 1 <= F(x) <= 7,所以对每组(L, R ...

  2. HDU 5317 RGCDQ (数论素筛)

    RGCDQ Time Limit: 3000MS   Memory Limit: 65536KB   64bit IO Format: %I64d & %I64u Submit Status ...

  3. HDU 5317 RGCDQ(素数个数 多校2015啊)

    题目链接:pid=5317" target="_blank">http://acm.hdu.edu.cn/showproblem.php?pid=5317 Prob ...

  4. hdu 5317 RGCDQ (2015多校第三场第2题)素数打表+前缀和相减求后缀(DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5317 题意:F(x) 表示x的不同质因子的个数结果是求L,R区间中最大的gcd( F(i) , F(j ...

  5. ACM学习历程—HDU 5317 RGCDQ (数论)

    Problem Description Mr. Hdu is interested in Greatest Common Divisor (GCD). He wants to find more an ...

  6. 2015 Multi-University Training Contest 3 hdu 5317 RGCDQ

    RGCDQ Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

  7. HDU 5317 RGCDQ

    题意:f(i)表示i的质因子个数,给l和r,问在这一区间内f(i)之间任意两个数最大的最大公倍数是多少. 解法:先用筛法筛素数,在这个过程中计算f(i),因为f(i)不会超过7,所以用一个二维数组统计 ...

  8. 2015 HDU 多校联赛 5317 RGCDQ 筛法求解

    2015 HDU 多校联赛 5317 RGCDQ 筛法求解 题目  http://acm.hdu.edu.cn/showproblem.php? pid=5317 本题的数据量非常大,測试样例多.数据 ...

  9. hdu 5317 合数分解+预处理

    RGCDQ Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

随机推荐

  1. POJ3525 Most Distant Point from the Sea(半平面交)

    给你一个凸多边形,问在里面距离凸边形最远的点. 方法就是二分这个距离,然后将对应的半平面沿着法向平移这个距离,然后判断是否交集为空,为空说明这个距离太大了,否则太小了,二分即可. #pragma wa ...

  2. UVALive6571 It Can Be Arranged(最小路径覆盖)

    题意:现在有n个课程,每个课程有一定的参与人数,然后每个课程有开始时间和结束时间ai,bi. 而且给定了一个矩阵clean(ij),表示的是上完i课程需要clean[i][j]的时间打扫卫生才能继续上 ...

  3. iOS-JS交互 (WebViewJavascriptBridge)

    , , , );     messageButton.titleLabel.font = font;     messageButton.backgroundColor = [UIColor colo ...

  4. Java 序列化的高级认识

    序列化 ID 问题 情境:两个客户端 A 和 B 试图通过网络传递对象数据,A 端将对象 C 序列化为二进制数据再传给 B,B 反序列化得到 C. 问题:C 对象的全类路径假设为 com.inout. ...

  5. OnClientClick="return confirm('确定要删除吗?')"

    OnClientClick="return confirm('确定要删除吗?')"   -----------------------前台代码 OnClientClick用于执行客 ...

  6. 23种设计模式学习一(单列模式)singleton

    单列模式的类(单线程下的) class Singleton { private static Singleton instance; private Singleton() { } public st ...

  7. DAL层与BLL层的设计原则

    通用DAL层: 提供一个通用的DAL层的基础框架,其中包括所有实体类的基类,所有DAL类的基类,以及用来在实体类和数据表以及实体类字段和数据表字段之间Mapping的Attributes.此层作为核心 ...

  8. Qt_5_3_MSVC2012-编译QFtp-qt5编译QFtp

    一.下载源码 git clone https://qt.gitorious.org/qt/qtftp.git 或者直接下载:云盘下载 二.构建 1.不对源码修改,直接构建qtftp 2.做如下修改,再 ...

  9. 可扩展Web架构与分布式系统

    原文:可扩展Web架构与分布式系统 开放源代码已经成为一些大型网站的基本原则.而在这些网站成长的过程中,一些优秀的实践经验和规则也出现在他们的结构中.本文旨在介绍一些在大型网站结构设计的过程中需要注意 ...

  10. http://blog.csdn.net/sd0902/article/details/8395677

    http://blog.csdn.net/sd0902/article/details/8395677