然而我太懒了……没有打哈希。
直觉告诉我第二个答案是选择的k个数的差的gcd,那么对于每一个质因数,记录一下序列中能被这个质数整除的差的gcd,然后就可以了

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#define N 100010
#define M 10000010using namespace std;int n,Ans1,Ans2,Maxx;
int A[N],B[N];
int p[M],v[M],vis[M],f[M];inline char nc(){static char buf[100000],*p1=buf,*p2=buf;return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
}inline void rea(int &x){char c=nc(); x=0;for(;c>'9'||c<'0';c=nc());for(;c>='0'&&c<='9';x=x*10+c-'0',c=nc());
}inline void First(){for(int i=2;i<=Maxx;i++){if(!p[i]) p[++*p]=i,v[i]=*p;for(int j=1;j<=*p&&p[j]*i<=Maxx;j++){p[p[j]*i]=1; v[p[j]*i]=j;if(i%p[j]==0) break;}}
}int gcd(int x,int y){if(!x||!y) return x+y;return y?gcd(y,x%y):x;
}int main(){rea(n);for(int i=1;i<=n;i++) rea(A[i]),Maxx=max(Maxx,A[i]);First();for(int K=1;K<=4;K++){int x=A[rand()%n+1],cnt=0,w=0,Max=0,nAns=0;for(int i=1;i<=n;i++)if(A[i]!=x) B[++cnt]=A[i]<x?(x-A[i]):(A[i]-x);else w++;for(int i=1;i<=*p;i++) vis[i]=f[i]=0;for(int i=1;i<=cnt;i++){int now=B[i];for(;now^1;now/=p[v[now]]){vis[v[now]]++;f[v[now]]=gcd(f[v[now]],B[i]);int y=p[v[now]];while((now/y)%y==0) now/=y;}}for(int i=1;i<=*p;i++)if(vis[i]>vis[Max]||(vis[i]==vis[Max]&&f[i]>nAns)) Max=i,nAns=f[i];if(vis[Max]+w>Ans1) Ans1=vis[Max]+w,Ans2=nAns;else if(vis[Max]+w==Ans1&&nAns>Ans2) Ans2=nAns;}return printf("%d %d\n",Ans1,Ans2),0;
}

[BZOJ3837][Pa2013][随机][乱搞]Filary相关推荐

  1. K - Kangaroo Puzzle Gym - 101981K (随机+乱搞)

    传送门 在一个最大为20*20的网格上,有出了若干只袋鼠,可以控制所有的袋鼠同时向上下左右某个方向走一格,袋鼠可以在一个格子重合,输出一个不超过5e4的UDLR序列,使得所有的袋鼠最终走到同一个格子. ...

  2. 【BZOJ-3578】GTY的人类基因组计划2 set + map + Hash 乱搞

    3578: GTY的人类基因组计划2 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 367  Solved: 159 [Submit][Status ...

  3. Luogu3732 [HAOI2017] 供给侧改革 【后缀数组】【线段树】【乱搞】

    题目分析: 这道题我是乱搞的,因为他说$01$串是随机的. 那么我们可以猜测能够让LCP变大的地方很少.求出后缀数组之后可能让LCP变大的地方就等价于从大到小往height里动态加点同时维护这个点左右 ...

  4. AcWing 397. 逃不掉的路(边双连通分量缩点成树 + 树链剖分乱搞)

    整理的算法模板合集: ACM模板 我们知道在同一个边双连通分量中的点没有必经边(因为至少有两条分离的路径). 所以我们直接tarjan求出桥后缩点,然后求一下树上两点间的距离即可. 那么如何求树上两点 ...

  5. python使用random模块生成随机数、实现随机乱序和随机抽样?

    如何使用random模块生成随机数.实现随机乱序和随机抽样? random.random()函数可以生成[0.0, 1.0)之间的随机浮点数. random.uniform(a, b)函数可以生成[a ...

  6. bzoj 1050: [HAOI2006]旅行comf(codevs.cn 1001 舒适的路线) 快排+并查集乱搞

    没用的话:好像很久没发博客了,主要是懒太蒟找不到水题.我绝对没弃坑...^_^ 还用些话:本文为博主原创文章,若转载请注明原网址和作者. 进入正题: 先pa网址: bzoj :http://www.l ...

  7. BZOJ-1800 飞行棋 数学+乱搞

    这道题感觉就是乱搞,O(n^4)都毫无问题 1800: [Ahoi2009]fly 飞行棋 Time Limit: 10 Sec Memory Limit: 64 MB Submit: 1172 So ...

  8. BZOJ4401:块的计数(乱搞)

    Description 小Y最近从同学那里听说了一个十分牛B的高级数据结构--块状树.听说这种数据结构能在sqrt(N)的时间内维护树上的各种信息,十分的高效.当然,无聊的小Y对这种事情毫无兴趣,只是 ...

  9. 【uoj#209】[UER #6]票数统计 组合数+乱搞

    题目描述 一个长度为 $n$ 的序列,每个位置为 $0$ 或 $1$ 两种.现在给出 $m$ 个限制条件,第 $i$ 个限制条件给出 $x_i$ .$y_i$ ,要求至少满足以下两个条件之一: 序列的 ...

最新文章

  1. IIS服务器五大安全要素
  2. sqlite3-查看数据库
  3. php字符串赋值给变量,JavaScript-如何将一个PHP字符串安全赋值给Javascript变量(包含引号和换行符的)...
  4. 谷歌翻译无法连接网络_window10无法连接网络
  5. java的requestmapping_SpringMVC RequestMapping 详解
  6. 高并发中,那些不得不说的线程池与ThreadPoolExecutor类
  7. 接口测试工具--Apipost不同脚本的作用
  8. asp.net 实现动态显示当前时间(不用javascript不考虑开销)
  9. 利用SMB协议共享电脑文件,发挥ipad生产力
  10. 树莓派+欧西亚室外温度湿度传感器+Arduino Nano+433Mhz接收模块+RRDTOOL制作室内室外温湿度记录监控系统
  11. 量子计算机 液体核磁共振,用液体核磁共振实现量子计算
  12. Java面试之Java基础5——面向对象的三大特性之封装、继承和多态
  13. RTA和RTB的区别
  14. kbhit函数(讲解)
  15. 程序员面试需要注意的问题
  16. 零数科技创新金融案例入选《2022全球区块链创新应用示范案例集》
  17. 英语前后缀大全 - 快速理解英语单词
  18. 最简单的九九乘法表打印
  19. 【23考研】计算机408数据结构代码题强化阶段划重点(王道书)
  20. 计算机主机元件电压,电脑主机漏电的原因

热门文章

  1. Linux文件目录颜色的含义
  2. 牛客网赛码网 输入输出格式 pythonC++
  3. 史上讲解最好的Docker教程,从入门到精通(建议收藏的教程)
  4. 芒果改进YOLOv7系列:超越ConvNeXt结构,原创结合Conv2Former改进结构,Transformer 风格的卷积网络视觉基线模型,高效涨点
  5. python乘车费用 青少年编程电子学会python编程等级考试二级真题解析2020年6月
  6. 黎曼的猜想 MySQL案例练习记录
  7. selenium PhantomJS Fiddler使用
  8. 平板如何下载鸿蒙系统,鸿蒙系统2.0
  9. 无法启动此程序因为计算机丢失dtlui,用360重装大师重装系统后开机提示计算机中丢失DTLUI.dll? 爱问知识人...
  10. ROS | launch启动文件的使用