FFT最新卡常研究

2022-05-01 05:12:08 字數 974 閱讀 3353

指標優化並沒有什麼卵用,反而增大了**的不可讀性。

除了本來的迴圈順序優化定址,在預處理單位複數根時,可以連續儲存,以增快定址速度,細節見**。

**給出的是fft,ntt是一樣的。

#include#define fo(i, x, y) for(int i = x, b = y; i <= b; i ++)

#define ff(i, x, y) for(int i = x, b = y; i < b; i ++)

#define fd(i, x, y) for(int i = x, b = y; i >= b; i --)

#define ll long long

#define db double

#define pp printf

#define hh pp("\n")

using namespace std;

struct p

};p operator + (p a, p b)

p operator - (p a, p b)

p operator * (p a, p b)

const db pi = acos(-1);

const int nm = 1 << 21;

int r[nm]; p a[nm], b[nm], w[nm];

void dft(p *a, int n, int f) p b;

for(int i = 1; i < n; i *= 2) for(int j = 0; j < n; j += 2 * i)

ff(k, 0, i) b = w[i + k] * a[i + j + k], a[i + j + k] = a[j + k] - b, a[j + k] = a[j + k] + b;

if(f == -1)

}void fft(p *a, p *b, int n)

int main()

BZOJ4259 殘缺的字串(FFT 卡常)

題面 題意 兩個串a和b,有萬用字元,問a在b中出現了幾次。好題 除了卡常以外 將萬用字元設為0 列舉開頭x 設f x m 1 i 0a i b x i a i b x i 2 f x i 0m 1a i b x i a i b x i 2若f x 為0,則a在b x 處出現了一次 f又恰好為乙個卷...

卡常筆記本

不是刻意搞的,只是把平時的經驗放上來。sqrt 的是我覺得比較有用的 話說沒用的好像被我刪了哈 它們之間差了4倍常數,所以慎用long long 開o 2o 2 o2 後前者略快於後者,不開o 2o 2 o2 慢到飛起,建議noipcsp乖乖手寫 2種寫法,被打了注釋的那種 常數差不多是另一種的2倍...

玄學卡常技巧總結

近期總是被cin和cout搞tle,一時興起找了些卡常技巧 文末有參考說明 快讀 inline intread while c 0 c 9 return x f 一般不用輸出優化 inline void out int x putchar x 10 0 在宣告函式之前寫上inline修飾符,可以加快...