https://ac.nowcoder.com/acm/contest/11166/H

官方题解。

比赛时,我们都是用暴力写的,数据太弱了,今天突然想起来,用fft写了一下。

主要使用fft求差值的卷,乘法我们在多项式的系数上做,加减法 我们在多项式的指数上做。

做减法的时候,我们把负数加N,变成正数即可。

下面是代码:

#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cstdlib>
#include <stack>
#include <vector>
#include <set>
#include <map>
#include <bitset>
#include <complex>
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define FILL(a,b) (memset(a,b,sizeof(a)))
#define re register
#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 secondusing namespace std;
typedef long long  ll;
typedef unsigned long long  ull;
typedef pair<ll,ll> pii;
const ll mod=1e9+7;
const ll N =2e6+10;
const double eps = 1e-6;
const double PI=acos(-1);
ll gcd(ll a,ll b){return !b?a:gcd(b,a%b);}
int dx[8]= {1,0,-1,0,1,1,-1,-1}, dy[8] = {0,1,0,-1,1,-1,1,-1};
struct Complex
{double x, y;Complex operator+ (const Complex& t) const{return {x + t.x, y + t.y};}Complex operator- (const Complex& t) const{return {x - t.x, y - t.y};}Complex operator* (const Complex& t) const{return {x * t.x - y * t.y, x * t.y + y * t.x};}
}a[N], b[N];
int rev[N], bit, tot;
void fft(Complex a[], int inv)
{for (int i = 0; i < tot; i ++ )if (i < rev[i])swap(a[i], a[rev[i]]);for (int mid = 1; mid < tot; mid <<= 1){auto w1 = Complex({cos(PI / mid), inv * sin(PI / mid)});for (int i = 0; i < tot; i += mid * 2){auto wk = Complex({1, 0});for (int j = 0; j < mid; j ++, wk = wk * w1){auto x = a[i + j], y = wk * a[i + j + mid];a[i + j] = x + y, a[i + j + mid] = x - y;}}}
}
void init(){tot = 1 << bit;for (int i = 0; i < tot; i ++ )rev[i] = ((rev[i >> 1] >> 1)) | ((i & 1) << (bit - 1));
}
int n,m=500000;
void solve(){cin>>n;for(int i=1;i<=n;i++){int u;cin>>u;a[u].x=1;b[500000-u].x=1;}while((1<<bit)<2*m+1) bit++;init();fft(a,1);fft(b,1);for(int i=0;i<tot;i++) a[i]=a[i]*b[i];fft(a,-1);// for(int i=500000;i>=500000-5;i--) cout<<(int)((a[i].x/tot)+0.5)<<endl;for(int i=n;i<=500001;i++){int f=1;for(int j=i;j<=500001;j+=i) if((int)((a[500000-j].x/tot)+0.5)>0){f=0;break;}if(f){cout<<i<<"\n";break;}}
}int main()
{iosint T=1;//cin>>T;//T=1;while(T--){solve();}return 0;
}

2021牛客第一场H.Hash Function—FFT求差值的卷相关推荐

  1. 2021牛客多校1 - Hash Function(思维+FFT)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的序列,现在要求找到一个 seedseedseed,使得所有数字变为 a[i]=a[i]modseeda[i]=a[i]\mod seeda[i] ...

  2. FFT ---- 2021牛客多校第一场 H Hash Function

    题目链接 题目大意: 解题思路: 首先我们知道任意两个数%seed\%seed%seed都不相同→\rightarrow→(aj−ai)%seed≠0(∀ai≤aj)(a_j-a_i)\%seed\n ...

  3. 牛客第一场 H XOR —— 线性基

    题目链接:点我啊╭(╯^╰)╮ 题目大意: nnn 个数,求子集内所有数异或为 000 的所有子集大小之和 解题思路: 考虑每个值对答案的贡献     首先对 nnn 个数消一次元,得到 rrr 个基 ...

  4. 2021牛客第一场 I. Increasing Subsequence-前缀和优化dp

    https://ac.nowcoder.com/acm/contest/11166/I 思路:dp[i][j] 是表示上上步走在i点,上一步走在j点的期望.首先我们很容易想到n^3的做法,那我们必须考 ...

  5. 2021牛客第一场 K.Knowledge Test about Match

    https://ac.nowcoder.com/acm/contest/11166/K 题意就是使得图中的那个式子最小,你的答案不一定是要最标准的,只要平均水平下和标准值的偏差不超过4%就行了. 有了 ...

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

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

  7. [2019牛客]第一场

    题目链接 A:Equivalent Prefixes 给你两个长度为n的序列a.b,求一个最大k值使,i-k 中任意一个区间的最小值下标都相同 我们用单调栈处理每个元素作为最小值的左端点. 我们把下标 ...

  8. 2021牛客暑期多校训练营9 Cells(LGV引理,FFT)

    2021牛客暑期多校训练营9 Cells(LGV引理,FFT) 题目链接 题意 在一个无限大的xyxyxy​坐标轴上,求从A={(0,a1),(0,a2),...,(0,an)}A=\{(0,a_1) ...

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

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

最新文章

  1. 如何制止OpenSSH漏洞?
  2. 科普云计算知识,迎接云计算大会
  3. LiveVideoStackCon 2018 注册通道即将关闭
  4. Css内边距与外边距
  5. MySQL中concat()与group_concat()用法
  6. oracle 表删掉了_分区,Oracle 删除表分区
  7. 13个免费创建和托管网站的在线工具[图]
  8. Oracle实现limit
  9. 计算机类603高数,拟录取ING ,谈谈603高等数学
  10. ns账号切换服务器对存档有影响吗,《集合啦!动物森友会》不支持存档转移 更换Switch需要重新游戏...
  11. Linux 误删文件后恢复文件
  12. VSCode中使用CodeRunner运行Python乱码
  13. 【Java】位运算符---算术右移和逻辑右移、算术左移和逻辑左移
  14. 区块链:Hyperledger Fabric环境配置及fabric-sample测试运行
  15. pycharm远程连接服务器防止ssh连接中断
  16. Realsense相关
  17. 广义互相关 matlab,关于小波分析和广义互相关
  18. 图像识别与处理——图像的表示与通道数问题
  19. Html 所有触发事件
  20. 解决TP-LINK TL-WR740N 联网问题

热门文章

  1. 出门就背他了!可伸缩的背包,自由变大变小,还有防盗功能!
  2. 豆瓣9分,颠覆世界观的好书,每读一章就感叹一次:原来如此!(免费领)
  3. 与毒”共舞30年!清华美女研究生为何放弃高薪,选择特招入伍?背后的原因令人泪崩......
  4. 这里聚集了优秀的数学老师、家长,有超多惊喜在等你!
  5. 一文读懂 AVL 树
  6. ftp上传图片出现550_FtpClient 实现文件上传
  7. java接口课程_用java定义一个接口,用于查询课程
  8. python中可以表示任意大的整数_Python无法表示99999999999999999999这样大的整数。
  9. excel筛选排序从小到大_excel表格怎么按字数的多少来排列!
  10. javascript内存泄漏调试工具mac_node.js 内存泄漏的秘密