THUPC2017 I Sum(牛頓恒等式)

2021-08-31 06:46:37 字數 2825 閱讀 5804

題意:

給定陣列a1.

..,a

na_1...,a_n

a1​...

,an​

,對於所有1≤i

≤k

1 \le i \le k

1≤i≤

k,求si=

∑jaj

is_i = \sum_a_j^i

si​=∑j

​aji

​。題解:這道題要用到乙個叫牛頓恒等式的玩意兒。

對於n

nn次多項式f=∑

i=0n

aixi

f=\sum_^na_ix^i

f=∑i=0

n​ai

​xi(注意是首一多項式),設其幾個根分別為x1,

x2,.

..,x

nx_1,x_2,...,x_n

x1​,x2

​,..

.,xn

​,設bi=

an−i

b_i =a_

bi​=an

−i​,那麼對於任意k

kk,有:

∑ j=

1nsi

bn−i

+kbn

=0

\sum_^n s_i b_+kb_n = 0

j=1∑n​

si​b

n−i​

+kbn

​=0這個東西在k≥n

k \ge n

k≥n的時候只需要把x

ix_i

xi​分別帶入f

ff然後相加即可得到,小於的時候可以用歸納法證明(當然我不會)。

然後分治fft+多項式求逆即可。 時間複雜度o(n

log⁡2n

+k

log⁡k)

o(n \log^2 n + k \log k)

o(nlog2n

+klogk)。

#include

using

namespace std;

const

int rlen=

1<<18|

1;inline

charnc(

)inline

intrd()

while

(isdigit

(ch)

)return i*f;

}inline

voidw(

int x)

if(x<0)

while

(x)while

(buf[0]

)putchar

(buf[buf[0]

--]+'0');

}const

int n=

2e6+

50, mod=

998244353

;inline

intadd

(int x,

int y)

inline

intdec

(int x,

int y)

inline

intmul

(int x,

int y)

inline

intpower

(int a,

int b,

int rs=1)

namespace fft

inline

void

dft(

int*a)}}

inline

void

opt()}

struct poly

inline

intdeg()

const

inline

int&

operator

(int x)

inline

const

int&

operator

(int x)

const

inline poly extend

(int len)

inline poly rev()

friend

inline poly operator*(

const poly &a,

const poly &b)

inline poly mul

(int b)

friend

inline poly operator-(

const poly &a,

const poly &b)

inline poly calc_inv

(poly f,

int len)

poly f0=

calc_inv

(f.extend

(len/2-

1),len/2)

;return

(f0.

mul(2)

-(f*f0)

.extend

(len-1)

*f0)

.extend

(len-1)

;}inline poly calc_inverse

(int len)};

int n,k;

inline poly solve

(int l,

int r)

int mid=

(l+r)

>>1;

return

solve

(l,mid)

*solve

(mid+

1,r);}

intmain()

APIO2017墊底記 THUPC2017划水記

看到大家的遊記都是從ctsc開始寫的,只有我為了防止 喪失信心沒有報ctsc,遊記只能從apio開始寫了。中午兩點多到了,發現跟我乙個房間的是乙個貴州小哥。先把pkusc和thusc的報名弄完,準備刷題發現忘帶u盤了。想了想,似乎應該刷一刷往年的apio題。就從去年開始吧。於是一下午 一晚上做完了賽...

THUPC2017 抱大腿記

day 0 移步day 1 來到了清華大學。見到了zrt巨巨。又發了件衣服,我們開始看別的隊的名字,蠻有意思的。我們隊叫 分手是祝願 lmy他們隊叫 相逢是問候 大爺他們隊叫 呵呵噠 8 30發了試機題。t1 puts citadel t2 a b t3 a b t4 heoi2017 day1 t...

THUPC2017看題總結

果題。求當前子彈能會使多少塊木板損壞,發現因為木板會隨著子彈數目的增加而更加容易損壞,故此詢問具有單調性。而後又發現可以離線,考慮整體二分。每次用乙個 solve x,y,l,r 表示當前處理 編號為 x 到 y 的子彈,編號為 l 到 r 的木板。把這些所有子彈都扔到樹狀陣列裡然後每個木板查詢區間...