HUD地址:https://acm.hdu.edu.cn/showproblem.php?pid=7073

 题目大意:选择数组中最多的数,使得他们模m同余(m>=2)。求最大的数量。

思路:然后我们全选奇数或者全选偶数的话,那么我们的答案是最少是n/2的,所以我们随机两个下标,他们都在正确答案的集合里的概率就为1/4,当我们随机k次时,失败的概率就是(3/4)^k,是非常小的,所以这个随机策略是可行的,知道两个数后,我们可以得到他们直接的差t,那么这个正确集合的m必然是t的质因子,所以我们分解t的质因子,对于每一个质因子我们o(n)去计算出他的答案,而4e12最多只有11个质因子,所以复杂度为O(k*11*n),分解质因子是根号级别的,预处理出根号4e12大小的质数就行了。

#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cstdlib>
#include <stack>
#include <vector>
#include <set>
#include <list>
#include <map>
#include <unordered_map>
#include <bitset>
#include <time.h>
#include <random>#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define endl '\n'
#define FILL(a,b) (memset(a,b,sizeof(a)))
#define lson rt<<1
#define rson rt<<1|1
#define lowbit(a) ((a)&-(a))
#define ios std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);
#define fi first
#define sc second
#define pb push_back
#define all(x) (x).begin(),(x).end()
using namespace std;
typedef long long  ll;
typedef unsigned long long  ull;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
const ll mod=998244353;
const ll N =3e5+5;
const double eps = 1e-8;
const double PI=acos(-1);
ll gcd(ll a,ll b){return !b?a:gcd(b,a%b);}
ll re(){ll x;scanf("%lld",&x);return x;}
ll mul(ll a, ll b, ll m){ll ans = 0;a %= m;while(b){if(b & 1)ans = (ans + a) % m;b /= 2;a = (a + a) % m;}return ans;}
ll qk(ll a,ll b,ll mod){ll ans=1;while(b){if(b&1) ans=ans*a%mod;a=a*a%mod;b/=2;}return ans;}
int dx[8]= {1,0,-1,0,1,1,-1,-1}, dy[8] = {0,1,0,-1,1,-1,1,-1};
template <class T>T _rand(T l, T r) // 生成随机数建议用<random>里的引擎和分布,而不是rand()模数,那样保证是均匀分布{static mt19937 eng(time(0));if (l > r)swap(l, r);uniform_int_distribution<T> dis(l, r);return dis(eng);}ll ans;
ll a[N],n;
vector<ll> p;
bool st[2000010];
void get(int n){st[0]=st[1]=1;for(int i=2;i<=n;i++){if(!st[i]) p.push_back(i);for(int v:p){if(v*i>n) break;st[v*i]=1;if(i%v==0) break;}}
}
void solve() {cin>>n;for(int i=1;i<=n;i++) cin>>a[i];ans=1;for(int r=1;r<=30;r++){int x= _rand(1ll,n);int y= _rand(1ll,n);if(x==y) continue;ll m=abs(a[x]-a[y]);if(m!=1){for(int v:p){if(v>m) break;if(m%v==0){while (m%v==0) m/=v;ll sum=0;for(int i=1;i<=n;i++){ll k=abs(a[x]-a[i]);if(k%v==0) sum++;}ans= max(ans,sum);}}if(m!=1){ll sum=0;for(int i=1;i<=n;i++){ll k=abs(a[x]-a[i]);if(k%m==0) sum++;}ans= max(ans,sum);}}}cout<<ans<<endl;
}int main()
{iosint T=1;cin>>T;get(2000000);while (T--) solve();return 0;
}

2021HDU多校第九场1008HDU7073 Integers Have Friends 2. 随机化相关推荐

  1. 2019牛客多校第九场AThe power of Fibonacci(广义BM)

    2019牛客多校第九场AThe power of Fibonacci(广义BM) 题目大意 求斐波那契数列m次方的前n项和 解题思路 显然,斐波那契的m次方前缀和依然是线性递推,因此考虑用exBM求解 ...

  2. 2018 Multi-University Training Contest 9 杭电多校第九场 (有坑待补)

    咕咕咕了太久  多校博客直接从第三场跳到了第九场orz 见谅见谅(会补的!) 明明最后看下来是dp场 但是硬生生被我们做成了组合数专场-- 听说jls把我们用组合数做的题都用dp来了遍 这里只放了用组 ...

  3. Cutting Bamboos(牛客多校第九场H主席树+二分+思维)

    链接:https://ac.nowcoder.com/acm/contest/889/H 来源:牛客网 There are n bamboos arranged in a line. The i-th ...

  4. Quadratic equation(二次剩余)2019牛客多校第九场

    链接:https://ac.nowcoder.com/acm/contest/889/B 来源:牛客网 题目描述 Amy asks Mr. B problem B. Please help Mr. B ...

  5. 2021HDU多校第一场 zoto(莫队+分块)

    题意: 给你一个序列,q次询问,每次询问l-r的区间内数字大小为x-y之间内不重复的个,保证数据所有大小为1e5以内. 思路: 比赛的时候通过调整了一下分块的大小和各种优化,用莫队把题目给卡过去了,实 ...

  6. 多校第九场总结,树剖

    http://bestcoder.hdu.edu.cn/blog/ 02 官方题解 由于没有修改操作,一个显然的想法是离线处理所有问题 将询问拆成1-x,1-y,1-LCA(x,y),则处理的问题转化 ...

  7. 数学--数论--HDU6919 Senior PanⅡ【2017多校第九场】

    Description 给出一个区间[L,R][L,R],问该区间中所有以KK作为最小因子(大于11的)的数字之和 Input 第一行输入一整数TT表示用例组数,每组用例输入三个整数L,R,KL,R, ...

  8. 2019杭电多校第九场 Rikka with Cake (hdu6681)

    题意:给出一个n * m的蛋糕,切 k 刀,每次从一个点(x,y)向 上下左右的一个方向切,问最后蛋糕被切成了几块 题解:显然,蛋糕的块数就是那么多线段的交点数 + 1.先离散,考虑向左切和向上切的, ...

  9. 2019牛客多校第九场 H Cutting Bamboos (二分主席树)

    看到题解说二分 心里也有数了..... H Cutting Bamboos 给了一些高度得柱子 每区间你可以坎y次 y次之后 必须砍没有了 没有砍 总长度得一样 问第x次砍得高度在哪里 因为砍得次数 ...

最新文章

  1. 2022-2028年中国遇水膨胀橡胶行业市场研究及前瞻分析报告
  2. 自定义键盘keyfere——pcsensor
  3. VS Code 1.37 发布!多达数十个图标迎来全新设计
  4. docker registry v2与harbor的搭建
  5. Linux首次登陆设置root
  6. python 自然语言处理(四)____词典资源
  7. Qunee For Html5 开发清新、高效的拓扑图组件
  8. windows 7 RC(7106.0.090408)下载另附windows7驱动收集整合(5月31日更新)
  9. Steam DS4手柄
  10. 修改某张表的结构_在T-SQL语言中,若要修改某张表的结构,应该使用的修改关键字是Alter。...
  11. 入侵WIN2003 PHP服务器的另类技术
  12. 给零基础初学者推荐的10个Python免费学习网站,赶快收藏
  13. docker适合初学者吗_简化了Docker:面向绝对初学者的动手指南
  14. USB过压过流保护芯片,可调限流4A,6V过压关闭
  15. 多测师拱墅校区__肖sir__项目讲解(1)
  16. 怎么查看自己微信支付宝绑定银行卡号
  17. Drools Accumulate 语法解析及使用
  18. 【Java】获取当前时间(毫秒级)
  19. 计算机丢失slimage.dll,slimage.dll
  20. FairyGUI基本操作和功能实现

热门文章

  1. 钟南山团队在患者粪便中检出新冠活病毒,国家卫健委回应!专家:做好这事很重要...
  2. 一生只有43年,喜欢泡妹打架,却凭借一篇文章震惊世界,跻身一流数学家
  3. 学好数学建模,走哪买菜都不怕!
  4. 兄dei,Python数据竞赛和5万现金奖励了解一下
  5. 锁屏快捷键_全面屏 iPhone 锁屏快捷键美化,让你的 iPhone 更特别
  6. java分页的工具类,java分页工具类
  7. influxdb mysql对比_InfluxDB和MySQL的读写对比测试
  8. promise 浏览器实现的源码_【大前端01-01】函数式编程与JS异步编程、手写Promise...
  9. 华为交换机linux版本号,Cisco和华为交换机常用配置命令总结
  10. 楚乔传手游 服务器维护,楚乔传手游网络异常进不去游戏怎么办?楚乔传网络异常解决方法...