點此看題
首先問題可以轉化成求∑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∑
nj=
0∑m
c(i,
j)×j
!×s(
m,j)
=j=0
∑mj
!×s(
m,j)
×i=1
∑nc
(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 顯然可以直接維護未出...