Luogu4191 CTSC2010 效能優化

2021-09-06 17:23:17 字數 2804 閱讀 9108

傳送門

題目翻譯:給定兩個 n

nn 次多項式 a,b

a,ba,

b 和乙個整數 c

cc,求 a×b

ca\times b^c

a×bc

在模 x

nx^n

xn意義下的卷積

顯然就是個迴圈卷積,所以只要代入 ωnk

\omega_n^

ωnk​

進去求出點值,然後插值就好了

???n

nn 不是 2

k2^k

2k的形式,不能直接 ntt

nttnt

t怎麼辦呢?

根據題目性質,可以把 n

nn 拆成 2a1

3a25

a37a

42^3^5^7^

2a1​3a

2​5a

3​7a

4​的形式

這啟示我們每次不是每次分成兩半而是拆分成 3/5

/7

3/5/7

3/5/

7 次,然後再合併點值

設 f (x

)=∑a

ixi,

fr(x

)=∑a

ip+r

xi

f(x)=\sum a_ix^i,f_r(x)=\sum a_x^i

f(x)=∑

ai​x

i,fr

​(x)

=∑ai

p+r​

xi那麼 f(x

)=∑x

rf(x

p)

f(x)=\sum x^rf(x^p)

f(x)=∑

xrf(

xp)根據單位複數的性質(消去引理和折半引理)那麼

f (ω

nan+

b)=∑

ωnp(

an+b

)rfr

(wnb

)f(\omega_n^)=\sum \omega_^f_r(w_n^b)

f(ωnan

+b​)

=∑ωn

p(an

+b)r

​fr​

(wnb

​)那麼只需要寫乙個每次分 p

pp 份的 fft

fftff

t 就好了

# include

using

namespace std;

typedef

long

long ll;

const

intmaxn

(5e5+5

);int n, c, a[maxn]

, b[maxn]

, tmp[maxn]

, g, pri[

233333

], tot, pw[2]

[maxn]

, mod, r[maxn]

;inline

intpow

(ll x,

int y)

inline

void

inc(

int&x,

int y)

intdfs

(int s,

int p,

int cur,

int blk)

inline

void

dft(

int*p,

int opt)

if(opt ==-1

)for

(c =

pow(n, mod -2)

, i =

0; i < n;

++i) p[i]

=(ll)p[i]

* c % mod;

}int

main()

for(i =

0; i < n;

++i)

scanf

("%d"

,&a[i]);

for(i =

0; i < n;

++i)

scanf

("%d"

,&b[i]);

pw[0]

[0]= pw[1]

[0]=

1, pw[0]

[1]= g, pw[1]

[1]=

pow(g, mod -2)

;for

(i =

2; i < n;

++i) pw[0]

[i]=

(ll)pw[0]

[i -1]

* g % mod, pw[1]

[i]=

(ll)pw[1]

[i -1]

* pw[1]

[1]% mod;

for(i =

0; i < n;

++i) r[i]

=dfs(0

, i,

1, n)

;dft

(a,1),

dft(b,1)

;for

(i =

0; i < n;

++i) a[i]

=(ll)a[i]

*pow

(b[i]

, c)

% mod;

dft(a,-1

);for(i =

0; i < n;

++i)

printf

("%d\n"

, a[i]);

return0;

}

Luogu4191 CTSC2010 效能優化

傳送門 題目翻譯 給定兩個 n 次多項式 a,b 和乙個整數 c 求 a times b c 在模 x n 意義下的卷積 顯然就是個迴圈卷積,所以只要代入 omega n 進去求出點值,然後插值就好了 n 不是 2 k 的形式,不能直接 ntt 怎麼辦呢?根據題目性質,可以把 n 拆成 2 3 5 ...

Luogu食物鏈做法2

這個題的做法2比做法1好想 以下距離都在 mod 3意義下 到最後所有動物的關係可以用樹表示,d i 表示節點i到當前fa i 的距離,我們規定若d x 1 d y 規定成 1也可以 代表x吃y 那麼如果x y同族,那麼如果規定x當前祖先到y當前距離為的d y d x 這樣x到y祖先距離為d x 到...

CTSC2018 Day2T1 Juice混合果汁

題解 在考場上a掉的題。把美味度排個序,然後按照 p為權值建立主席樹,把每個果汁按照拍好的順序新增進去。主席樹上維護總公升數cnt以及總 sum。對於每個詢問,我們二分乙個美味值,check的時候去主席樹上查詢大於等於這個美味值的果汁中購買l公升的 即可。1 include2 include3 de...