传送门

文章目录

  • 题意:
  • 思路:

题意:

给你一个序列aaa,找一个最大的集合,集合中所有元素模mmm相等。

思路:

之前做过一道连续的,直接尺取就好,这个不连续加大了难度。
考虑最简单的情况m=2m=2m=2时,答案至少为⌈n2⌉\left \lceil \frac{n}{2} \right \rceil⌈2n​⌉,看到这个很容易想到随机算法。
我们随机选两个点a,ba,ba,b,那么这两个点都在答案中的概率至少为14\frac{1}{4}41​,如果我们选404040次,那么不在答案中的概率(34)40(\frac{3}{4})^{40}(43​)40是一个很大的数,几乎为000,所以现在假设我们选的两个点都在答案中,我们就可以通过枚举∣ai−aj∣|a_i-a_j|∣ai​−aj​∣的质因子作为mmm,让后取最大值即可。
一个数的质因子个数很少,所以还是比较快的。
O(kamax+11kn)O(k\sqrt {a_{max}}+11kn)O(kamax​​+11kn)

// Problem: H - Integers Have Friends 2.0
// Contest: Virtual Judge - 2021多校第九场补题
// URL: https://vjudge.net/contest/454088#problem/H
// Memory Limit: 262 MB
// Time Limit: 5000 ms
//
// Powered by CP Editor (https://cpeditor.org)//#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native")
//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#include<random>
#include<cassert>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid ((tr[u].l+tr[u].r)>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=4000010,mod=1e9+7,INF=0x3f3f3f3f;
const double eps=1e-6;int n;
LL a[N];
int prime[N+10],cnt;
bool st[N+10];
mt19937 rnd(time(0));void get_prime(int n)
{for(int i=2;i<=n;i++){if(!st[i]) prime[cnt++]=i;for(int j=0;prime[j]<=n/i;j++){st[prime[j]*i]=true;if(i%prime[j]==0) break;    } }
} int get(LL p,LL x) {int ans=0;for(int i=1;i<=n;i++) if(a[i]%p==x) ans++;return ans;
}int main()
{//  ios::sync_with_stdio(false);
//  cin.tie(0);// rd_ac();get_prime(N-1);int _; scanf("%d",&_);while(_--) {scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%lld",&a[i]);int ans=1;for(int k=1;k<=40;k++) {int pos1,pos2;pos1=rnd()%n+1,pos2=rnd()%n+1;if(pos1==pos2) {k--;continue;}LL as=abs(a[pos1]-a[pos2]);for(int i=0;i<cnt&&1ll*prime[i]*prime[i]<=as;i++) if(as%prime[i]==0) {while(as%prime[i]==0) as/=prime[i];ans=max(ans,get(prime[i],a[pos1]%prime[i]));}if(as>1) ans=max(ans,get(as,a[pos1]%as));}printf("%d\n",ans);}return 0;
}
/**/

HDU - 7073 Integers Have Friends 2.0 随机化 + 质因子相关推荐

  1. Codeforces 1548B Integers Have Friends 尺取法 Hdu 7073 Integers Have Friends 2.0 力能扛鼎随机算法

    文章目录 题意 题解 CF1548B 题解 Hdu 7073 CF1548B HDU7073 题意 定义数的好友组为一个集合SSS,取正整数m>1,∀x∈s,xmodmm>1,\foral ...

  2. 2021HDU多校9 - 7073 Integers Have Friends 2.0(随机数)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的序列,找到一个长度最长的子序列,满足存在一个模数 mmm,使得这个子序列中的所有数取模后相等 题目分析:挺有意思的一道题,首先假如取 m=2m= ...

  3. hdu 5428(分解质因子)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5428 题意:给你N个数,让你求出这N个数最小的因子之积,但要满足一个条件,那就是这个乘积必须包含三个因 ...

  4. 飞音网络电话V2.0.3.0 [语质卓越 绿色小巧]

    软件名称:飞音网络电话 V2.0.3.0 [语质卓越.绿色小巧]介绍 软件大小:2.58MB 软件语言:简体中文 软件类别: 软件授权:免费软件 更新时间:2013-07-04 10:08:36 应用 ...

  5. Pro_07丨波动率因子3.0与斜率因子

    量化策略开发,高质量社群,交易思路分享等相关内容 『正文』 ˇ 大家好,今天我们分享Pro系列第7篇量化策略及内容说明. 该篇是基于波动率因子基础上的进一步视角逻辑改进,我们在Pro_05和LM系列中 ...

  6. android模拟按键方法,Android随笔之——模拟按键操作的几种方式

    前几天转过一篇Android上模拟按键操作.触屏事件的博客,昨天又去找了百度.谷歌了一下,写了一点简单的测试代码,留待不时之需.有需要看之前转载的那篇博客的请看这里→_→转:Android随笔之--使 ...

  7. 二分图HK算法[数论+二分图最大独立集]:Lightoj1356

    Prime Independence LightOJ - 1356 题目大意:给你n个数,你从这个集合中挑选出若干个数,使得这个集合的数里面两两之间a/b!=k[k是质数并且a>b]a/b!=k ...

  8. 线性求逆元模板_ACM 数论基本模板

    ACM 数论基本模板 1.欧几里得 求最大公约数,最小公倍数 (1)递归的写法:int gcd(int a,int b) {return b?gcd(b,a%b):a;} (2)辗转相除法: int ...

  9. PAT甲级1059 Prime Factors :[C++题解]分解质因子

    文章目录 题目分析 题目链接 题目分析 暴力求质因数 下面i就是质因子,s是质因子i的阶数. 暴力的时间复杂度O(n),会超时 void divide(int n){for(int i=2;i< ...

最新文章

  1. redmine的知识库插件-Redmine Knowledgebase plugin,程序员们的知识需要管理
  2. 从零开始学python网络爬虫-教你从零开始学会写爬虫(Python)
  3. 选择Data类型在Access与Sql中的区别
  4. 常见Web技术之间的关系,你了解多少?
  5. php实现小说字典功能_PHP实现获取并生成数据库字典的方法
  6. php 图片库 加星,PHP使用imagick_st类库把JPG生成GIF动画图片
  7. 【Spring Boot】1.基础知识
  8. 操作ROS松灵机器人步骤及遇到的问题
  9. 笔记本能连上WIFI网络,但是无法上网怎么办
  10. Linux 内核的同步机制,第 2 部分(来自IBM)
  11. offsetTop和scrollTop差异
  12. 使用适用于Windows的Ultimate Boot CD轻松地重置忘记的密码
  13. 看完此篇文章可以快速熟悉Spring事务
  14. 怎么用diskgenius扩大c盘,超简单。
  15. IIS部署,发布网站
  16. python功能主菜单_Pycharm主菜单学习
  17. 深度好文!多年架构师经验,详解阿里内部大数据平台架构
  18. 按键精灵万能写法轻松驾驭图色脚本
  19. 滴滴官网图片切换效果
  20. 打脸谢尔顿的电池,了解一下

热门文章

  1. linux用户取消密码,[Linux]linux下取消用户名和密码直接登录
  2. 当社恐和社恐相亲时,场面会有多尴尬?
  3. 法国一家夜总会上演机器人钢管舞
  4. 不确定规划及应用代码_性能测试划分之应用领域
  5. python wx提示框字体_使用wxStyledTextCtrl实现代码提示
  6. php pdo 查询语句,PDO:预处理语句(参数化查询)
  7. MySQL调用mongodb事务回滚_SpringBoot整合MongoDB,在多数据源下实现事务回滚。
  8. java树算法_Java数据结构算法(三)树
  9. c语言幼儿园积木游戏,幼儿园《积木游戏》课件【三篇】
  10. r语言remarkdown展示图_R语言—自动报告Markdown笔记