2021HDU多校9 - 7073 Integers Have Friends 2.0(随机数)
题目链接:点击查看
题目大意:给出一个长度为 nnn 的序列,找到一个长度最长的子序列,满足存在一个模数 mmm,使得这个子序列中的所有数取模后相等
题目分析:挺有意思的一道题,首先假如取 m=2m=2m=2 的话,那么所有数字非奇即偶,所以答案至少是 ⌈n2⌉\lceil \frac{n}{2}\rceil⌈2n⌉
假如我们随机选两个位置 x,yx,yx,y,满足 x≠yx\neq yx=y,那么这两个位置同时位于答案中的概率至少为 14\frac{1}{4}41,也就是说选不中的概率为 34\frac{3}{4}43
再假如我们选择的 xxx 和 yyy 属于答案中,那么 mmm 可行的取值是 ∣(ax−ay)|(a_x-a_y)∣(ax−ay),筛出质因子后每次 O(n)O(n)O(n) 去计算答案就可以了
那么对上述操作执行 KKK 次,每次都选不中答案的概率就是 (34)K(\frac{3}{4})^K(43)K,当 K=40K=40K=40 时,这个数值就是 10−510^{-5}10−5 级别的了
需要注意的是,答案记得初始化为 ans=1ans=1ans=1,因为上面的操作只能计算答案大于等于二的情况
因为 HDU 的上古评测机,还是建议打个欧拉筛优化一下筛质因子的过程,能快不少
代码:
// Problem: Integers Have Friends 2.0
// Contest: Virtual Judge - HDU
// URL: https://vjudge.net/problem/HDU-7073
// Memory Limit: 262 MB
// Time Limit: 5000 ms
//
// Powered by CP Editor (https://cpeditor.org)// #pragma GCC optimize(2)
// #pragma GCC optimize("Ofast","inline","-ffast-math")
// #pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
#include<cassert>
#include<bitset>
#include<list>
#include<unordered_map>
#define lowbit(x) (x&-x)
using namespace std;
typedef long long LL;
typedef unsigned long long ull;
template<typename T>
inline void read(T &x)
{T f=1;x=0;char ch=getchar();while(0==isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}while(0!=isdigit(ch)) x=(x<<1)+(x<<3)+ch-'0',ch=getchar();x*=f;
}
template<typename T>
inline void write(T x)
{if(x<0){x=~(x-1);putchar('-');}if(x>9)write(x/10);putchar(x%10+'0');
}
const int inf=0x3f3f3f3f;
const int N=1e6+100;
mt19937_64 eng(time(NULL));
LL a[N];
int n;
int cal(LL x,LL y) {int cnt=0;for(int i=1;i<=n;i++) {cnt+=a[i]%x==y;}return cnt;
}
int main()
{#ifndef ONLINE_JUDGE
// freopen("data.in.txt","r",stdin);
// freopen("data.out.txt","w",stdout);
#endif
// ios::sync_with_stdio(false);int w;cin>>w;while(w--) {scanf("%d",&n);uniform_int_distribution<int>ran(1,n);for(int i=1;i<=n;i++) {scanf("%lld",a+i);}int ans=1;for(int K=1;K<=30;K++) {int l=-1,r=-1;while(l==r) {l=ran(eng),r=ran(eng);}LL tmp=llabs(a[l]-a[r]);for(int i=2;1LL*i*i<=tmp;i++) {if(tmp%i==0) {ans=max(ans,cal(i,a[l]%i));while(tmp%i==0) {tmp/=i;}}}if(tmp>1) {ans=max(ans,cal(tmp,a[l]%tmp));}}printf("%d\n",ans);}return 0;
}
2021HDU多校9 - 7073 Integers Have Friends 2.0(随机数)相关推荐
- HDU - 7073 Integers Have Friends 2.0 随机化 + 质因子
传送门 文章目录 题意: 思路: 题意: 给你一个序列aaa,找一个最大的集合,集合中所有元素模mmm相等. 思路: 之前做过一道连续的,直接尺取就好,这个不连续加大了难度. 考虑最简单的情况m=2m ...
- 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 ...
- 2021HDU多校第九场1008HDU7073 Integers Have Friends 2. 随机化
HUD地址:https://acm.hdu.edu.cn/showproblem.php?pid=7073 题目大意:选择数组中最多的数,使得他们模m同余(m>=2).求最大的数量. 思路:然 ...
- 【多校训练】2021HDU多校4
[前言] 今天写题手感很好,写的都是1A,然而太蠢了做不动- - 开场自己切了三个水题,队友写了一个水题就开始搞不动了,后面就过了一个05. 字符串如此SB的东西都忘了,今天赶紧补回来了. rk53, ...
- 【多校训练】2021HDU多校6
[前言] 这场比赛属实阴间,题十分诡异. 最后rk78,校3/9 1001. Yes Prime Minister [题目] 给定一个数 x x x,求一个最短的区间 [ l , r ] [l,r] ...
- 2021HDU多校第一场 zoto(莫队+分块)
题意: 给你一个序列,q次询问,每次询问l-r的区间内数字大小为x-y之间内不重复的个,保证数据所有大小为1e5以内. 思路: 比赛的时候通过调整了一下分块的大小和各种优化,用莫队把题目给卡过去了,实 ...
- 2021HDU多校10 - 7084 Pty loves string(KMPnext树+主席树+dfs序)
题目链接:点击查看 题目大意:给出一个长度为 nnn 的字符串 sss,需要回答 qqq 次询问,每次询问给出一对 (x,y)(x,y)(x,y) ,意思是用 sss 的前缀 s[1:x]s[1:x] ...
- 2021HDU多校8 - 7057 Buying Snacks(矩阵快速幂套NTT优化dp)
题目链接:点击查看 题目大意:给出 nnn 种糖果,每种糖果有大小包装之分,有三种购买方案,价钱分别如下: 单独购买一个小的,花费一块钱 单独购买一个大的,花费两块钱 ∀i>1\forall i ...
- 2021HDU多校8 - 7059 Counting Stars(线段树)
题目链接:点击查看 题目大意:给出 nnn 个数字,需要执行 mmm 次操作,每次操作分为下列三种类型: 1 l r :输出区间 [l,r][l,r][l,r] 的 sumsumsum 和 2 l r ...
最新文章
- 借助Ant工具,实现快速开发
- haskell,lisp,erlang你们更喜欢哪个?
- mysql重新载入my.cnf_怎么重新加载MySQL的my.cnf?
- vue 筛选组件_记一个复杂组件(Filter)的从设计到开发
- Mac OS/Linux命令查询网络端口占用情况
- Node.js ES6 模块化的基本语法-直接导入并执行模块代码
- 【Linux磁盘优化管理--RAID和LVM】
- php inputcsv,php实现CSV文件导入和导出
- MS SQL 日常维护管理常用脚本(二)
- ECS 数据保护——数据备份新特性与最佳实践
- 搭建vue开发环境的步骤
- 代码审查的必要性和最佳实践
- 解决:视频中有噪声(电流声)怎么办的问题(简单实用高效的视频降噪方法)
- 威漫哨兵机器人_曾经秒杀X战警的哨兵机器人,在漫威漫画原著里更让人头疼!...
- Brain Predicted Age (一)
- 基于qiankun搭建ng-alain15微前端项目示例实践
- Socket编程入门C++
- Xftp 传文件到虚拟机一直显示状态错误,传不进去
- matlab 光栅 傅里叶,光栅原理及MATLAB仿真汇编.doc
- “200+语种,11种文档格式”,百度文档翻译API,真的很好用
热门文章
- 得胜php100怎么样,优缺点评测得胜Q麦评价如何?怎么样呢?老司机透漏
- 在mysql中删除表正确的是什么_在MySQL中删除表的操作教程
- linux 设备文件分区命令,Linux常见设备及相应/dev/xxx文件名、Mount Point、挂载点、Mount命令、fstab、挂载分区(示例代码)...
- 开发Eureka Server
- 用户认证失败或权限不足异常处理
- MySQL分组查询—简单使用
- 分布式ID-数据库自增ID
- SpringBoot-@ComponentScan、@Import
- 微服务通信带来的问题
- OAauth2.0包括以下角