BZOJ2194 快速傅利葉之二

2022-03-07 05:42:25 字數 1118 閱讀 7672

傳送門:

題目大意:請計算c[k]=sigma(a[i]*b[i-k]) 其中 k < = i < n ,並且有 n < = 10 ^ 5。 a,b中的元素均為小於等於100的非負整數。

題解:這就是所謂的卷積,找個時間一定要好好看看,上fft咯

**:

1 #include2 #include3 #include4 #include5 #include6

#define maxn 270005

7#define pi acos(-1)

8using

namespace

std;

9int

n,m;

10int

ans[maxn],rev[maxn];

11int

l;12

struct

f;}15 f operator -(const f &x);}

16 f operator *(const f &x);}

17}a[maxn],b[maxn],c[maxn],w,wn,t1,t2;

18int

read()

1925

void fft(f *a,int

type)26;

31for (int i=0; is)32;

34for (int j=i; j>1)); j++,w=w*wn)

3539}40

}41}42

int re(int

x)43

48void

init()

4956

for (int i=0; ire(i);

57 fft(a,1); fft(b,1

);58

for (int i=0; ib[i];

59 fft(c,-1

);60

for (int i=0; iint)(c[i].rea/n+0.5

);61

for (int i=m-1; i<2*m-1; i++) printf("

%d\n

",ans[i]);

6263}64

intmain()

65

view code

bzoj 2194 快速傅利葉之二

time limit 10 sec memory limit 259 mb submit 1314 solved 772 submit status discuss 請計算c k sigma a i b i k 其中 k i n 並且有 n 10 5。a,b中的元素均為小於等於100的非負整數。第一...

BZOJ 2194 快速傅利葉之二

已知 a,b a,b 序列,計算 ck ai bi k ck ai bi k 觀察題目名稱,可以想到fft fft能解決的是形如下面的式子 hk fi gk i hk fi gk i 可以發現,f f 陣列的下標和 g role presentation style position relativ...

bzoj2194 快速傅利葉之二

題目鏈結 給出兩個長度為n的數列a,b。求乙個數列c滿足 c k sum limits na i b i k n le 10 5 長得和卷積很像,觀察一下卷積的形式 c k sum limits ia i b k i 所以先把b陣列翻轉過來。然後所求的式子就變成了 c k sum limits na...