bzoj

先搞第一问.考虑简单情况,如果\(m=2\),那么一定有个剩余类大小\(\ge \lceil\frac{n}{2}\rceil\),同时这也是答案下界

然后我们每次随机选出一个数\(a_i\),然后钦定它在我们要的剩余类里,现在再枚举其他数,看一下最多有多少个数\(a_j\)可以和他模\(m\)同余,也就是选最多的数满足\(\gcd(|a_i-a_{j_1}|,|a_i-a_{j_2}|,|a_i-a_{j_3}|...)>1\).那对于每个\(j\),把所有\(|a_i-a_j|\)的质因子位置全\(+1\)--因为\(m\)取质数显然比取合数优.最后\(cnt_p\)的最大值即为第一问答案

第二问的话,因为是\(\gcd(...)>1\),那我们对于每个质数位置维护\(|a_i-a_j|\)为它倍数的\(\gcd(|a_i-a_j|...)\),这样第二问答案就是第一问最大的位置上最大的这个\(\gcd\)

#include<bits/stdc++.h>
#define LL long long
#define uLL unsigned long long
#define db double using namespace std;
const int N=1e5+10,M=N*100;
int rd()
{
int x=0,w=1;char ch=0;
while(ch<'0'||ch>'9'){if(ch=='-') w=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return x*w;
}
int n,a[N],prm[N*10],tt,pp[M],a1,a2,c1[M],c2[M]; int main()
{
for(int i=2;i<=10000000;++i)
{
if(!pp[i]) pp[i]=i,prm[++tt]=i;
for(int j=1;i*prm[j]<=10000000;++j)
{
pp[i*prm[j]]=prm[j];
if(i%prm[j]==0) break;
}
}
n=rd();
for(int i=1;i<=n;++i) a[i]=rd();
int Q=10;
while(Q--)
{
int ii=rand()%n+1,bs=0;
for(int i=1;i<=n;++i)
{
if(a[i]==a[ii]){++bs;continue;}
int x=abs(a[i]-a[ii]),xx=x,las=0;
while(x>1)
{
if(pp[x]!=las)
++c1[pp[x]],c2[pp[x]]=__gcd(xx,c2[pp[x]]);
las=pp[x],x/=pp[x];
}
}
for(int i=1;i<=n;++i)
{
if(a[ii]==a[i]) continue;
int x=abs(a[i]-a[ii]);
while(x>1)
{
if(c1[pp[x]]+bs>a1||(c1[pp[x]]+bs==a1&&c2[pp[x]]>a2))
a1=c1[pp[x]]+bs,a2=c2[pp[x]];
c1[pp[x]]=c2[pp[x]]=0;
x/=pp[x];
}
}
}
printf("%d %d\n",a1,a2);
return 0;
}

最新文章

  1. String一点小发现
  2. xml_editor
  3. 微信企业号 jsSDK wx.config报invalid signature错误,导致api接口无法使用
  4. php随机获取金山词霸每日一句
  5. ural1613 For Fans of Statistics
  6. 201521123110 《Java程序设计》第6周学习总结
  7. 启动redis
  8. 嵌入式C语言查表法的项目应用
  9. consistent hash(一致性哈希算法)
  10. JQuery官方学习资料(译):Data方法
  11. H5外包 微信小程序外包 小程序外包 就找北京动点开发团队
  12. STL 序列容器
  13. css 媒体查询 注意点
  14. Java 中的 HttpServletRequest 和 HttpServletResponse 对象
  15. 安装虚拟环境virtualenvwrapper和django
  16. SAS Shortcut Keys
  17. IOS AES加密之ECB128模式
  18. Jmeter(五)_函数
  19. JAVA中使用RSA通过秘钥文件对字符串进行加密解密
  20. 四边形优化dp

热门文章

  1. LC 712. Minimum ASCII Delete Sum for Two Strings
  2. 自定义圆形图片控件CircleImageView的实现
  3. Tooltip 文字提示
  4. [nginx]设置代理和静态资源目录
  5. Mycat读写分离 + 主从复制(Gtid)
  6. 关于bootstrap按钮的偏移
  7. Python中将(字典,列表等)变量格式化成字符串输出
  8. C#编程 委托 Lambda表达式和事件
  9. pytorch神经网络层搭建方法
  10. Leetcode之深度+广度优先搜索(DFS+BFS)专题-934. 最短的桥(Shortest Bridge)