题目连接:Click here

题意:在一个[L,R]内找到最大的gcd(f[i],f[j])其中L<=i<j<=R,f[x]表示i分解质因数后因子的种类数。eg:f[10]=2(10=2*5),f[12]=2(12=2*2*3)。

分析:很容易想到先将f[x]求出来,这里x最大1e6,要在常数时间内求出f[x]。并且稍加分析就知道1<=f[x]<=7,可以用一个dp[i][j]表示从f[1]到f[i]有多少个j。这样就可以在常数时间内预处理出来,后面在O(1)的时间内就可以输出结果。并且这个题并不用把GCD求出来,区间里最大的f[x]就是这个区间f[x]出现次数>=2次的中取最大的f[x]。具体看代码。

 #include <iostream>
#include <cstdio>
#include <cstring>
#define clc(a, b) memset(a, b, sizeof(a))
using namespace std;
const int M = 1e6+;
int dp[M][];
int f[M]; void Pre() // 预处理函数,
{
memset( dp, , sizeof(dp) );
memset( f, , sizeof(f) );
for( int i = ; i < M; i++ ) // 首先将f(x)求出来,保存在f[]数组中
{
if( f[i] )
continue;
f[i] = ;
for( int j=; j*i<M; j++ )
{
f[j*i]++;
}
}
dp[][] = ;
for(int i=; i<M; i++) // 预处理dp[]数组
{
for(int j=; j <= ; j++)
{
dp[i][j] = dp[i-][j];
}
dp[i][f[i]]++;
}
} int main()
{
Pre();
int t;
scanf("%d", &t);
while( t-- )
{
int a, b;
scanf("%d %d", &a, &b);
int ret = ;
for( int i=; i<; i++ )
{ //保证i出现2次 //保证i出现过
if( dp[b][i]-dp[a-][i] > && dp[b][i] )
ret = max( ret, i );
}
printf("%d\n", ret);
}
}

HDU OJ 5317 RGCDQ( 2015多校联合训练第3场) 暴力打表+小技巧的更多相关文章

  1. HDU OJ 5326 Work( 2015多校联合训练第3场) 并查集

    题目连接:戳ME #include <iostream> #include <cstdio> #include <cstring> using namespace ...

  2. hdu 5358 First One 2015多校联合训练赛#6 枚举

    First One Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Tota ...

  3. hdu 5381 The sum of gcd 2015多校联合训练赛#8莫队算法

    The sum of gcd Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) T ...

  4. hdu 5361 2015多校联合训练赛#6 最短路

    In Touch Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total ...

  5. HDU 5358(2015多校联合训练赛第六场1006) First One (区间合并+常数优化)

    pid=5358">HDU 5358 题意: 求∑​i=1​n​​∑​j=i​n​​(⌊log​2​​S(i,j)⌋+1)∗(i+j). 思路: S(i,j) < 10^10 & ...

  6. 2015多校联合训练赛 hdu 5308 I Wanna Become A 24-Point Master 2015 Multi-University Training Contest 2 构造题

    I Wanna Become A 24-Point Master Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 ...

  7. 2015多校联合训练赛hdu 5301 Buildings 2015 Multi-University Training Contest 2 简单题

    Buildings Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Tota ...

  8. HDU 5371 (2015多校联合训练赛第七场1003)Hotaru&#39;s problem(manacher+二分/枚举)

    pid=5371">HDU 5371 题意: 定义一个序列为N序列:这个序列按分作三部分,第一部分与第三部分同样,第一部分与第二部分对称. 如今给你一个长为n(n<10^5)的序 ...

  9. HDU 4643 GSM 暑期多校联合训练第五场 1001

    点击打开链接 我就不说官方题解有多坑了 V图那么高端的玩意儿 被精度坑粗翔了 AC前 AC后 简直不敢相信 只能怪自己没注意题目For the distance d1 and d2, if fabs( ...

随机推荐

  1. L6 Shell

    写出以下shell脚本1 判定一个用参数指定的文件是否为可执行,如果不是,则改为可执行#!/bin/bash if [ -x $1 ]then echo "OK"else echo ...

  2. 如何在Eclipse中开发并调试自己的插件(或者说如何将自己的代码插件化)

    Setting up Eclipse to create and debug plugins for ImageJ 最近在做一个关于卫星遥感全链路仿真的项目,由于项目是基于ImageJ开发,而Imag ...

  3. Java 初始化字段方式和顺序

    Java 初始化字段方式和顺序: 类加载时直接初始化静态字段; 类加载时调用静态方法初始化静态字段; 实例化对象时,在调用构造函数之前代码块中初始化字段; 实例化对象时,在调用构造函数之时初始化字段; ...

  4. QF——UITableViewCell性能优化(视图复用机制)

    这几篇博客总结的不错: 点击进入 点击进入 总结起来方案一般有以下几种: 1.不使用透明视图: 2.减少视图的个数: 3.cell复用机制:(重点) 4.图片缓存: 5.网络请求使用非主线程. 6.预 ...

  5. Android中Dialog对话框

    布局文件xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns ...

  6. Android 常用代码片小结

    1. dp px 相互转换---------------public class DensityUtil { /** * 根据手机的分辨率从 dip 的单位 转成为 px(像素) */ public ...

  7. Linux----函数中变量的作用域、local关键字。

    问题引出: 问题说明: shell的函数中如果变量的前面没有加local关键字.在全局作用域内存在这个变量名的情况下.函数中会直接使用这个变量 而不是自己创建一个.要想做到在函数创建一个变量也是可以的 ...

  8. Oracle EBS-SQL (BOM-4):检查期间新增编码总数.sql

    selectFU.description                                    创建者,msi.CREATION_DATE                        ...

  9. onActivityResult不起作用?可能是和你的launchMode有关!

    昨天在自己的项目中用到了onActivityResult()方法获得activity的返回值.我从Activity01通过 startActivityForResult启动了Activity02和Ac ...

  10. Cortex-M3学习日志(四) -- UART0实验

    LPC1768含有4 个符合16C550工业标准的异步串口UATR0-UART3,其中UART1具有标准的MODEM接口和RS-485/EIA-485接口模式.串口通讯接口是连接计算机.终端.通讯控制 ...