CF932E Team Work 第二類斯特林數

2022-02-05 12:27:23 字數 1397 閱讀 2177

題解n太大,而k比較小,可以o(k^2)做

想方設法爭取把有關n的迴圈變成o(1)的式子

考慮用公式:

來替換i^k

原始的組合數c(n,i)一項,考慮能否和後面的係數分離開來,直接變成2^n處理。

之後大力推式子

考慮要消掉n,就想辦法把n往裡面放,與和n有關的項外層列舉的話,相對就不動了。可以乘法分配律把n搞定。

#include#define reg register int

#define il inline

#define numb (ch^'0')

using

namespace

std;

typedef

long

long

ll;il

void rd(int &x)

namespace

miracle

return

ret;

}ll n,k;

intmain()

}ll jie=1

; ll ans=0

;

for(reg j=1;j<=k;++j)

printf(

"%lld

",ans);

}else

}ll ans=0

;

for(reg i=1;i<=n;++i)

printf(

"%lld

",ans);

}return0;

}}signed main()

/*author: *miracle*

date: 2018/12/28 19:46:50

*/

view code

推式子其實是下策(下下策是打表找規律。。。)

如果有組合意義的話,那麼效果是立竿見影的。

意義是,n個盒子,從中選擇i個出來,再把k個球往這i個盒子裡放,可以不放的方案數總和。盒子不同球不同

k很小,沒用的盒子很多,

轉化研究物件,

考慮k個球最終佔據了哪幾個盒子。其他的盒子打醬油愛選不選。

那麼直接就是:

一步搞定!

模板 第二類斯特林數 列

從通項公式入手好像不行了。法一 直接從定義入手 把n個球劃分成m個等價類 假設等價類兩兩不同,最後除以m!直接上egf,a 1 i x i a m的i次項係數,再乘上i!再除以m!法二 從遞推公式入手 s n,m s n 1,m 1 m s n 1,m 設ogf s m x 是第m列二斯的ogf,則...

第二類斯特林數總結

標籤 第二類斯特林數 最近做題的時候遇到了一些跟第二類斯特林數有關的東西,發現網上的資料不是很多,於是寫一篇部落格來總結一下。第二類斯特林數 s n,m 表示的是把n個不同的小球放在m個相同的盒子裡方案數。upd 為了看得清楚,有時候我們也用 begin n m end 來表示 s n,m 一般有兩...

第二類斯特林數模板

第二類斯特林數s n m s n,m 表示的是把 n 個不同的小球放在 m 個相同的盒子裡方案數。遞推式子如下 初始化 s 0 0 1s n,m s n 1,m 1 ms n 1,m s n m s n 1,m 1 ms n 1,m const ll mod 1e9 7 ll s maxn maxn...