H-Hash Function

Shining_xzl大佬题解

本题答案符合题意的充分必要条件是:不能是任意两个数的差以及他们的因数,因此只需用用FFT求出这些数的差,记为差的集合。

从小到大考虑一个答案,以及答案的倍数是不是上述差的集合,不是则符合。

#include<bits/stdc++.h>using namespace std;
using ll=long long;const int maxn=(1<<20)+5;
const double PI=acos(-1);
struct Complex
{double x,y;Complex operator+(const Complex &o) const{return{x+o.x,y+o.y};}  Complex operator-(const Complex &o) const{return{x-o.x,y-o.y};}  Complex operator*(const Complex &o) const{return{x*o.x-y*o.y,x*o.y+y*o.x};}
}A[maxn],B[maxn];
int rev[maxn];
void FFT(Complex *a,int N,int inv)
{for(int i=0;i<N;i++) if(i<rev[i]) swap(a[i],a[rev[i]]);for(int mid=1;mid<N;mid<<=1){Complex Wn=Complex({cos(PI/mid),inv*sin(PI/mid)});for(int i=0;i<N;i+=mid*2){Complex w=Complex({1,0});for(int j=0;j<mid;j++,w=w*Wn){Complex x=a[i+j],y=w*a[i+j+mid];a[i+j]=x+y,a[i+j+mid]=x-y;}}}if(inv==-1) for(int i=0;i<N;i++) A[i].x/=N;
}
// --------FFTint n;
const int Bs=500000;int vis[maxn];int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);cin>>n;for(int i=1;i<=n;i++){int a;cin>>a;A[a].x=1;B[Bs-a].x=1;}int num=1<<20,bit=20;for(int i=1;i<num;i++) rev[i]=rev[i>>1]>>1|(i&1)<<(bit-1); FFT(A,num,1),FFT(B,num,1);for(int i=0;i<num;i++) A[i]=A[i]*B[i];FFT(A,num,-1);for(int i=0;i<=Bs;i++) vis[i]=int(A[i+Bs].x+0.5);for(int i=n;;i++){bool ok=1;for(int j=i;j<=Bs;j+=i)if(vis[j]) {ok=0;break;}if(ok) return cout<<i<<'\n',0;}return 0;
}

暴力_链表维护差值

链表维护差值,如果差值不存在,则O(1)删除,非常快,但是后续被出题人卡了~~

#include<bits/stdc++.h>using namespace std;
using ll=long long;const int N=(1<<20)+5;int fr[N],to[N];void del(int x){to[fr[x]]=to[x];fr[to[x]]=fr[x];}int n,a[N];
int no[N],vis[N],mx;
int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);to[0]=1,fr[500001]=-1;for(int i=1;i<=500000;i++) fr[i]=i-1,to[i]=i+1;cin>>n;for(int i=1;i<=n;i++) {cin>>a[i];vis[a[i]]=1;mx=max(mx,a[i]);}for(int i=1;i<=n;i++)for(int j=to[0];j!=-1&&a[i]+j<=mx;j=to[j])if(vis[a[i]+j]) {del(j);no[j]=1;}for(int i=n;;i++){bool ok=1;for(int j=i;j<=mx;j+=i) if(no[j]){ok=0;break;}if(ok) return cout<<i<<'\n',0;}return 0;
}

2021牛客暑期多校训练营1 H-Hash Function(数学+FFT)相关推荐

  1. 2021牛客暑期多校训练营1 H Hash Function FFT\NTT

    传送门 文章目录 题意: 思路: 题意: 给你一个数组aaa,你需要找一个最小的模数xxx,使得aaa中每个数都模上xxx之后互不相同. n≤5e5,ai≤5e5,ai!=ajn\le5e5,a_i\ ...

  2. 2021牛客暑期多校训练营9

    2021牛客暑期多校训练营9 题号 题目 知识点 A A Math Challenge B Best Subgraph C Cells D Divide-and-conquer on Tree E E ...

  3. 2021牛客暑期多校训练营5

    2021牛客暑期多校训练营5 题号 题目 知识点 A Away from College B Boxes 概率 C Cheating and Stealing D Double Strings 线性d ...

  4. 2021牛客暑期多校训练营4

    2021牛客暑期多校训练营4 题号 题目 知识点 A Course B Sample Game C LCS D Rebuild Tree E Tree Xor 思维+线段树 F Just a joke ...

  5. 2021牛客暑期多校训练营3

    2021牛客暑期多校训练营3 题号 题目 知识点 A Guess and lies B Black and white C Minimum grid 二分图匹配 D Count E Math 数论+打 ...

  6. 2021牛客暑期多校训练营2

    2021牛客暑期多校训练营2 题号 题目 知识点 A Arithmetic Progression B Cannon C Draw Grids D Er Ba Game E Gas Station F ...

  7. 2021牛客暑期多校训练营1

    2021牛客暑期多校训练营1 题号 题目 知识点 难度 A Alice and Bob 博弈论 B Ball Dropping 计算几何 签到 C Cut the Tree D Determine t ...

  8. 2021牛客暑期多校训练营2,签到题CDFKI

    2021牛客暑期多校训练营2 题号 标题 已通过代码 通过率 团队的状态 A Arithmetic Progression 点击查看 6/72 未通过 B Cannon 点击查看 34/104 未通过 ...

  9. 2021牛客暑期多校训练营1, 签到题DFBG

    2021牛客暑期多校训练营1 题号 标题 已通过代码 通过率 团队的状态 A Alice and Bob 点击查看 1365/5586 通过(博弈论-打表) B Ball Dropping 点击查看 ...

  10. 【训练题66:状压暴力 | 子集dp】Greater Integer, Better LCM | 2021牛客暑期多校训练营5

    题意 Greater Integer, Better LCM | 2021牛客暑期多校训练营5 给你 a,b,ca,b,ca,b,c ,你需要找到一对 x,yx,yx,y ,满足: lcm(a+x,b ...

最新文章

  1. 一个程序员眼中的好UI
  2. JavaWeb:HttpServletResponse和HttpServletRequest
  3. php动态网页设计教材,PHP动态网页设计(第2版)
  4. pandas拉长dataframe
  5. SQLite入门笔记
  6. android手机连接PC后怎样切换为U 盘模式
  7. 配置kafka Server
  8. spring 读取配置文件
  9. 安卓编解码的分辨率问题
  10. Flask留言板Demo
  11. 土方回填施工方案范本_土方回填施工方案范本
  12. vbox虚拟机添加硬盘
  13. 鸡小德手机小常识 如何鉴定手机是否为行货
  14. 【毕业设计】基于机器学习的餐厅销量预测 -大数据 python
  15. 想要搭建建基于Nodejs的网站怎么做
  16. 想考数据库工程师?你需要了解这些
  17. OpenAI CEO Sam Altman:巨型 AI 模型时代即将终结!
  18. DTAS-电机机壳与端盖止口垂直度对电机气隙影响
  19. 09internet 协议安全问题
  20. 计算机跟广告设计那个学容易,学广告设计与制作用什么笔记本电脑好?

热门文章

  1. 爱卡创誓记java刷钱_【178创誓记】快速升级:40到50级只需要两天的黄金刷
  2. java collator_Java Collator compare(String, String)用法及代码示例
  3. c语言三目运算符_C语言中的三目运算符是啥?有何用处?
  4. Hadoop 中zoo_0基础如何入门HADOOP
  5. php绘制饼图,php怎么绘制饼图?
  6. python——学习笔记2
  7. msf payload php,Metasploit(四)--Msfpayload命令
  8. Java当中 文件得输入流 输出流
  9. 2019年第十届蓝桥杯国赛B组试题E-路径计数-dfs(坑题)
  10. AcWing 1234. 倍数问题