題意:
給定陣列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
nai
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
sib
n−i
+kbn
=0這個東西在k≥n
k \ge n
k≥n的時候只需要把x
ix_i
xi分別帶入f
ff然後相加即可得到,小於的時候可以用歸納法證明(當然我不會)。
然後分治fft+多項式求逆即可。 時間複雜度o(n
log2n
+k
logk)
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 的木板。把這些所有子彈都扔到樹狀陣列裡然後每個木板查詢區間...