TJOI2018 教科書般的褻瀆

2021-10-09 10:11:17 字數 2343 閱讀 6782

點此看題

首先問題可以轉化成求∑i=

1nim

\sum_^n i^m

∑i=1n​

im0x01 拉格朗日插值法

你會發現這就是板子,因為他是乙個m+1

m+1m+

1次多項式,選m+2

m+2m+

2個點插值就可以了。

時間複雜度o(m

3)

o(m^3)

o(m3

),考試時候降智寫了o(m

4)

o(m^4)

o(m4

),淦!(貼乙個考試時候的**)

#include

#include

using

namespace std;

#define int long long

const

int m =55;

const

int mod =

1e9+7;

intread()

while

(c>=

'0'&& c<=

'9')

return x*f;

}int t,n,m,a[m]

,y[m]

,inv[m]

,l[m]

,r[m]

;int

qkpow

(int a,

int b)

return r;

}int

****

(int x)

x%=mod;

int ans=0;

for(

int i=

0;i<=m+

1;i++

) inv[i]

=qkpow

(i,mod-2)

;for

(int i=

0;i<=m+

1;i++

) ans=

(ans+y[i]

*t)%mod;

}return

(ans+mod)

%mod;

}int

cal(

int l,

int r)

signed

main()

a[++m]

=n+1

;int ans=0;

for(

int i=

1;i<=m;i++

) l[i]

=a[i-1]

+1,r[i]

=a[i]-1

;for

(int i=

1;i<=m;i++

)printf

("%lld\n"

,(ans+mod)

%mod);}

}//100

0x02 第二類斯特林數

更巧妙,我是看這位巨佬的部落格學的。

冪和斯特林數的關係特別常用,2020

2020

2020

的省選組合數問題就考的是這個,推一波柿子:

∑ i=

1nim

=∑i=

1n∑j

=0mc

(i,j

)×j!

×s(m

,j)=

∑j=0

mj!×

s(m,

j)×∑

i=1n

c(i,

j)=∑

j=0m

j!×s

(m,j

)×c(

i+1,

j+1)

\begin \sum_^ni^m&=\sum_^n\sum_^mc(i,j)\times j!\times s(m,j)\\ &=\sum_^mj!\times s(m,j)\times \sum_^nc(i,j)\\&=\sum_^mj!\times s(m,j)\times c(i+1,j+1) \end

i=1∑n​

im​=

i=1∑

n​j=

0∑m​

c(i,

j)×j

!×s(

m,j)

=j=0

∑m​j

!×s(

m,j)

×i=1

∑n​c

(i,j

)=j=

0∑m​

j!×s

(m,j

)×c(

i+1,

j+1)

​第乙個式子源於第二類斯特林數的性質,第三個柿子就是楊輝三角。**懶得給了

TJOI2018 教科書般的褻瀆

首先,認真讀題不難發現若血量的區間 1,m i 連續,則只需要一張褻瀆就可以殺死區間 1,m i 內所有怪物,所以 k m 1 考慮到這點,我們就可以輕鬆的寫出式子 保證 a i 公升序 定義 a 0 0 有 large ans sum limits left sum limits j sum li...

TJOI 2018 教科書般的褻瀆

題目描述 小豆喜歡玩遊戲,現在他在玩乙個遊戲遇到這樣的場面,每個怪的血量為 a i 且每個怪物血量均不相同,小豆手裡有無限張 褻瀆 褻瀆的效果是對所有的怪造成 1 點傷害,如果有怪死亡,則再次施放該法術。我們認為血量為 0 的怪物死亡。小豆使用一張 褻瀆 會獲得一定的分數,分數計算如下,在使用一張 ...

Code 7 教科書般的褻瀆

不難發現,對於所有血量的隨從都存在的情況,詢問 1,m 1,m 1,m 的答案應為 o n logn o nlogn o nlog n 級別。考慮分別維護 f if i fi 表示 i ii 點法術傷害的褻瀆造成傷害的次數。對於 i o n i leq o sqrt i o n 顯然可以直接維護未出...