【BZOJ4833】最小公倍佩尔数(min-max容斥)
【BZOJ4833】最小公倍佩爾數(shù)(min-max容斥)
題面
BZOJ
題解
首先考慮怎么求\(f(n)\),考慮遞推這個東西
\((1+\sqrt 2)(e(n-1)+f(n-1)\sqrt 2)=e(n)+f(n)\sqrt 2\)
拆開之后可以得到:\(e(n)=e(n-1)+2f(n-1),f(n)=f(n-1)+e(n-1)\)。
把每一層的\(e\)都給展開,得到:\(\displaystyle f(n)=1+f(n-1)+2\sum_{i=1}^{n-2}f(i)\)
然后差分搞搞,\(\displaystyle f(n)-f(n-1)=f(n-1)-f(n-2)+2*f(n-2)\)。
得到\(f(n)=2f(n-1)+f(n-2)\),特殊的\(f(0)=0,f(1)=1\)。
然后我們發(fā)現(xiàn)要求\(lcm\),那么就先考慮\(f(a)\)和\(f(b)\)的\(gcd\)是什么。
這個東西顯然可以類似斐波那契數(shù)列那樣子利用輾轉(zhuǎn)相減得到\(gcd(f(a),f(b))=f(gcd(a,b))\)。
接下來就可以考慮怎么求答案了。
然后\(lcm\)的式子是對于每個質(zhì)因子,考慮其\(max\)。
考慮\(min-max\)容斥,把\(max\)變成\(min\),那么就可以從\(lcm\)變成\(gcd\)。
然后把\(min-max\)容斥的式子給寫出來:
\[max(S)=\sum_{T\subset S}(-1)^{|T|+1}min(T)\]
套到\(lcm\)上就是:
\[lcm(S)=\prod_{T\subset S}gcd(T)^{(-1)^{|T|+1}}\]
那么就有
\[g(n)=\prod_{T\subset S}f_{gcd(T)}^{(-1)^{|T|+1}}=\prod_{i=1}^n f_i^{\sum_{T\subset S}[gcd(T)=i](-1)^{|T|+1}}\]
上面那個指數(shù)看著就可以莫比烏斯反演一下之類的,然后令上面那一堆東西是\(a[i]\),然后令\(b[i]=\sum_{i|d}a[d]\)這個系數(shù)稍微推一下,得到:
\[b[i]=\sum_{i|d}a[d]=\sum_{T\subset S}[i|gcd(T)](-1)^{|T|+1}\]
這個值顯然之和是否存在\(i\)倍數(shù)的數(shù)相關(guān),存在就是\(1\),沒有就是\(0\)。
而莫比烏斯反演可以得到
\[a[i]=\sum_{i|d}\mu(\fracze8trgl8bvbq{i})b[d]\]
再把這個東西帶回去
\[\begin{aligned} g[n]&=\prod_{i=1}^n f_i^{a[i]}\\ &=\prod_{i=1}^n f_i^{\sum_{i|d}\mu(\fracze8trgl8bvbq{i})b[d]}\\ &=\prod_{i=1}^n\prod_{i|d}f_i^{\mu(\fracze8trgl8bvbq{i})b[d]} \end{aligned}\]
因為\(d\)的范圍在\(n\)以內(nèi),所以必定存在\(d\)的倍數(shù),所以\(b[d]=1\),那么只需要提前一個\(log\)預(yù)處理后面一半就行了。
轉(zhuǎn)載于:https://www.cnblogs.com/cjyyb/p/10923643.html
總結(jié)
以上是生活随笔為你收集整理的【BZOJ4833】最小公倍佩尔数(min-max容斥)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 项目一:SORM基本框架之基本思路
- 下一篇: 项目收集一