2021牛客第一场H.Hash Function—FFT求差值的卷
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求差值的卷相关推荐
- 2021牛客多校1 - Hash Function(思维+FFT)
题目链接:点击查看 题目大意:给出一个长度为 nnn 的序列,现在要求找到一个 seedseedseed,使得所有数字变为 a[i]=a[i]modseeda[i]=a[i]\mod seeda[i] ...
- FFT ---- 2021牛客多校第一场 H Hash Function
题目链接 题目大意: 解题思路: 首先我们知道任意两个数%seed\%seed%seed都不相同→\rightarrow→(aj−ai)%seed≠0(∀ai≤aj)(a_j-a_i)\%seed\n ...
- 牛客第一场 H XOR —— 线性基
题目链接:点我啊╭(╯^╰)╮ 题目大意: nnn 个数,求子集内所有数异或为 000 的所有子集大小之和 解题思路: 考虑每个值对答案的贡献 首先对 nnn 个数消一次元,得到 rrr 个基 ...
- 2021牛客第一场 I. Increasing Subsequence-前缀和优化dp
https://ac.nowcoder.com/acm/contest/11166/I 思路:dp[i][j] 是表示上上步走在i点,上一步走在j点的期望.首先我们很容易想到n^3的做法,那我们必须考 ...
- 2021牛客第一场 K.Knowledge Test about Match
https://ac.nowcoder.com/acm/contest/11166/K 题意就是使得图中的那个式子最小,你的答案不一定是要最标准的,只要平均水平下和标准值的偏差不超过4%就行了. 有了 ...
- 2021牛客暑期多校训练营1 H Hash Function FFT\NTT
传送门 文章目录 题意: 思路: 题意: 给你一个数组aaa,你需要找一个最小的模数xxx,使得aaa中每个数都模上xxx之后互不相同. n≤5e5,ai≤5e5,ai!=ajn\le5e5,a_i\ ...
- [2019牛客]第一场
题目链接 A:Equivalent Prefixes 给你两个长度为n的序列a.b,求一个最大k值使,i-k 中任意一个区间的最小值下标都相同 我们用单调栈处理每个元素作为最小值的左端点. 我们把下标 ...
- 2021牛客暑期多校训练营9 Cells(LGV引理,FFT)
2021牛客暑期多校训练营9 Cells(LGV引理,FFT) 题目链接 题意 在一个无限大的xyxyxy坐标轴上,求从A={(0,a1),(0,a2),...,(0,an)}A=\{(0,a_1) ...
- 2021牛客暑期多校训练营1
2021牛客暑期多校训练营1 题号 题目 知识点 难度 A Alice and Bob 博弈论 B Ball Dropping 计算几何 签到 C Cut the Tree D Determine t ...
最新文章
- 如何制止OpenSSH漏洞?
- 科普云计算知识,迎接云计算大会
- LiveVideoStackCon 2018 注册通道即将关闭
- Css内边距与外边距
- MySQL中concat()与group_concat()用法
- oracle 表删掉了_分区,Oracle 删除表分区
- 13个免费创建和托管网站的在线工具[图]
- Oracle实现limit
- 计算机类603高数,拟录取ING ,谈谈603高等数学
- ns账号切换服务器对存档有影响吗,《集合啦!动物森友会》不支持存档转移 更换Switch需要重新游戏...
- Linux 误删文件后恢复文件
- VSCode中使用CodeRunner运行Python乱码
- 【Java】位运算符---算术右移和逻辑右移、算术左移和逻辑左移
- 区块链:Hyperledger Fabric环境配置及fabric-sample测试运行
- pycharm远程连接服务器防止ssh连接中断
- Realsense相关
- 广义互相关 matlab,关于小波分析和广义互相关
- 图像识别与处理——图像的表示与通道数问题
- Html 所有触发事件
- 解决TP-LINK TL-WR740N 联网问题
热门文章
- 出门就背他了!可伸缩的背包,自由变大变小,还有防盗功能!
- 豆瓣9分,颠覆世界观的好书,每读一章就感叹一次:原来如此!(免费领)
- 与毒”共舞30年!清华美女研究生为何放弃高薪,选择特招入伍?背后的原因令人泪崩......
- 这里聚集了优秀的数学老师、家长,有超多惊喜在等你!
- 一文读懂 AVL 树
- ftp上传图片出现550_FtpClient 实现文件上传
- java接口课程_用java定义一个接口,用于查询课程
- python中可以表示任意大的整数_Python无法表示99999999999999999999这样大的整数。
- excel筛选排序从小到大_excel表格怎么按字数的多少来排列!
- javascript内存泄漏调试工具mac_node.js 内存泄漏的秘密