題解n太大,而k比較小,可以o(k^2)做
想方設法爭取把有關n的迴圈變成o(1)的式子
考慮用公式:
來替換i^k
原始的組合數c(n,i)一項,考慮能否和後面的係數分離開來,直接變成2^n處理。
之後大力推式子
考慮要消掉n,就想辦法把n往裡面放,與和n有關的項外層列舉的話,相對就不動了。可以乘法分配律把n搞定。
#include#define reg register intview code#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
*/
推式子其實是下策(下下策是打表找規律。。。)
如果有組合意義的話,那麼效果是立竿見影的。
意義是,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...