【BZOJ2194】快速傅立叶之二】的更多相关文章

bzoj2194 快速傅立叶之二 链接 bzoj 思路 对我这种和式不强的人,直接转二维看. 发现对\(C_k\)贡献的数对(i,j),都是右斜对角线. 既然贡献是对角线,我们可以利用对角线的性质了. 不过右斜角线不太好,我们把每一行都reverse一下,换成左斜角线. 对角线上\(i+j\)相等,可以套上多项式乘法了. 隐藏bug \(a_i,b_i\)均不大于100,而且数字有1e5个 最大值是1e9,而模数是998244353 应该是可以卡掉模数的,但是不故意卡是不可能爆模数的. AC代码…
快速傅立叶之二 bzoj-2194 题目大意:给定两个长度为$n$的序列$a$和$b$.求$c$序列,其中:$c_i=\sum\limits_{j=i}^{n-1} a_j\times b_{j-i}$. 注释:$1\le n\le 10^5$,$0\le a_i,b_i\le 100$. 想法: 显然这是一道$FFT$裸题. 如图: 上面的序列就是$a$序列,下面就是$b$序列. 左图如题意,我们发现当把$b$序列翻转之后就变成了右图的样子,我们设为$d$序列. 我们把$a$序列和$d$序列想…
Description 请计算C[k]=sigma(a[i]*b[i-k]) 其中 k < = i < n ,并且有 n < = 10 ^ 5. a,b中的元素均为小于等于100的非负整数. Input 第一行一个整数N,接下来N行,第i+2..i+N-1行,每行两个数,依次表示a[i],b[i] (0 < = i < N). Output 输出N行,每行一个整数,第i行输出C[i-1]. Sample Input 5 3 1 2 4 1 1 2 4 1 4 Sample O…
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; ; ); struct node{ double real,imag; ;} node operator +(const node &x){return (node){real+x.real,imag+x.im…
传送门 模板题. 将bbb序列反过来然后上fftfftfft搞定. 代码: #include<bits/stdc++.h> #define ri register int using namespace std; inline int read(){ int ans=0; char ch=getchar(); while(!isdigit(ch))ch=getchar(); while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),…
http://www.lydsy.com/JudgeOnline/problem.php?id=2194 相乘两项的下标 的 差相同 那么把某一个反过来就是卷积形式 fft优化 #include<cmath> #include<cstdio> #include<iostream> #include<algorithm> using namespace std; <<)+; ); int r[N]; struct Complex { double…
Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1776  Solved: 1055[Submit][Status][Discuss] Description 请计算C[k]=sigma(a[i]*b[i-k]) 其中 k < = i < n ,并且有 n < = 10 ^ 5. a,b中的元素均为小于等于100的非负整数. Input 第一行一个整数N,接下来N行,第i+2..i+N-1行,每行两个数,依次表示a[i],b[i] (0 &…
题目 请计算C[k]=sigma(a[i]*b[i-k]) 其中 k < = i < n ,并且有 n < = 10 ^ 5. a,b中的元素均为小于等于100的非负整数. 输入格式 第一行一个整数N,接下来N行,第i+2..i+N-1行,每行两个数,依次表示a[i],b[i] (0 < = i < N). 输出格式 输出N行,每行一个整数,第i行输出C[i-1]. 输入样例 5 3 1 2 4 1 1 2 4 1 4 输出样例 24 12 10 6 1 题解 和2179几乎…
Code: #include <cstdio> #include <algorithm> #include <cmath> #include <cstring> #define setIO(s) freopen(s".in","r",stdin) #define maxn 200000 #define pi 3.1415926535898 using namespace std; int len=1,l,r[maxn&…
[BZOJ2194]快速傅立叶之二 Description 请计算C[k]=sigma(a[i]*b[i-k]) 其中 k < = i < n ,并且有 n < = 10 ^ 5. a,b中的元素均为小于等于100的非负整数. Input 第一行一个整数N,接下来N行,第i+2..i+N-1行,每行两个数,依次表示a[i],b[i] (0 < = i < N). Output 输出N行,每行一个整数,第i行输出C[i-1]. Sample Input 5 3 1 2 4 1…