首先,認真讀題不難發現若血量的區間 \([1,m_i]\) 連續,則只需要一張褻瀆就可以殺死區間 \([1,m_i]\) 內所有怪物,所以 \(k = m+1\)。
考慮到這點,我們就可以輕鬆的寫出式子(保證 \(a_i\) 公升序):
定義 \(a_0 = 0\),有
\[\large ans = \sum\limits_^\left(\sum\limits_^}j^-\sum\limits_^m(a_j-a_)^\right)
\]寫出了這個式子,如果你知識面不足的話,就沒有然後了(至少像我這種蒟蒻是這樣的)。
只需知道 \(\sum\limits_^}j^\) 是乙個 \(m+2\) 次的多項式,這個式子就可以算了。
\(\sum\limits_^i^n\) 是 \(n+1\) 次多項式好像是乙個比較常用的結論,但我本人並沒有找到網路上的證明,所以嘗試著自己證了一下。
大量公式警告。
定義:\[f(x) = \sum\limits_^i^n
\]不失一般性,直接考慮 \(n\) 的情況。
設 \(g(x) = x^\)。
對每一項 \(g(x)\) 使用二項式定理展開:
\[\begin
&g(x)=(x-1)^+\tbinom(x-1)^n\cdots+\tbinom(x-1)+\tbinom\\
&g(x-1)=(x-2)^+\tbinom(x-2)^n\cdots+\tbinom(x-2)+\tbinom\\
&\cdots\cdots\\
&g(1) = 1^
\end\]
將上述式子全部合併起來有:
\[\sum\limits_^x}=\sum\limits_^\sum\limits_^\tbinom(x-i)^
\]化簡有:
\[x^ = \sum\limits_^\sum\limits_^\tbinom(x-i)^
\]移項有:
\[x^ = \sum\limits_^\sum\limits_^\tbinom(x-i)^+\sum\limits_^\tbinom(x-i)^
\]\[\sum\limits_^(x-i)^n = \frac-\sum\limits_^\sum\limits_^\tbinom(x-i)^}
\]即為:
\[f(x-1)=\sum\limits_^i^n = \frac-\sum\limits_^\sum\limits_^\tbinom(x-i)^}-1
\]這個式子是乙個最高項為 \(x^\) 次多項式,即猜測成立。
綜上,\(f(x) = \sum\limits_^i^n\) 是乙個 \(n+1\) 次多項式。
\[\large ans = \sum\limits_^\left(\sum\limits_^}j^-\sum\limits_^m(a_j-a_)^\right)
\]\(\sum\limits_^}j^\) 是乙個 \(m+2\) 次的多項式所以可以用拉格朗日插值法算出來。
拉格朗日插值的式子:
\[\ell_i(k)=\prod\limits_^\frac
\]\[f(k) = l(k)= \sum\limits_^y_i\ell_i(k)
\]這樣做是 \(\mathcal(m^2)\),因為本題取值是連續的,所以可以優化到 \(\mathcal(m)\)。
優化後的式子長這樣:
\[f(k) = \sum\limits_^(-1)^y_i\frac\cdot suf_}\cdot fac_}
\]\(pre_i\),\(suf_i\),\(fac_i\) 分別是預處理出來的字首積,字尾積,階乘。
對於原式的 \(\sum\limits_^m(a_j-a_)^\) 直接暴力算就可以了。
最終的時間複雜度是 \(\mathcal(m^2)\) 的。
# include # include # include # include # include # include # include # define ll long long
# define reg register
const ll mod = 1e9+7;
int t;
ll a[55],n,m,k,fac[55],pre[55],suf[55],f[55],ans;
inline int mod(const int x)
inline int qpow(ll x,int p=1e9+5)
inline int lagrange(const int x)
int main()
for(reg int i = 2; i <= k ; ++i) f[i] = (f[i-1]+qpow(i,m+1))%mod;
for(reg int i = 1; i <= m+1 ; ++i)
printf("%d\n",ans);ans = 0;
}return 0;
}
\(\mathcal(m^2)\) TJOI2018 教科書般的褻瀆
點此看題 首先問題可以轉化成求 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...
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 顯然可以直接維護未出...