女神(goddess) 組合數學

2022-02-05 22:53:46 字數 2084 閱讀 1509

出自某模擬賽。

題目大意:

對1e9+7取模。

資料範圍

20 % : n<=300

40 % : n<=2,000

50 % : n<=10,000

70 % : n<=1,000,000

100 % : n<=1,000,000,000

題解

方法眾多。

然而我太蒟了,2h43min愣是寫了乙個40pts暴力走人。

開始指著想正解,但是發現想不出來,然後寫n^2暴力,結果總是要麼漏算要麼算重要麼取模出錯。。。最後才調出來。

$n^3$暴力顯然。然後打表。

$n=1,ans_1=1$

$n=2,ans_2=6$

$n=3,ans_3=24$

$n=4,ans_4=80$

然後,套路的先觀察相鄰兩項的關係。

然後嘗試和項數的下標套上關係。

$ans_2=ans_1\times \frac$

$ans_3=ans_2\times \frac$

$ans_4=ans_3\times \frac$

誒,然後發現了規律!!

可以遞推。

$f_=f_n\times \frac$

$f_=f_n\times \frac$

迭代下去得:

$f_=f_1 \frac$

$f_=\frac\times (n+1)\times(n+2)}$

$f_=\frac\times n\times(n+1)}$

即可出結果

有點意思的是,i+n-i-1=n-1,k-j+j-1=k-1對於任意的i,j恆成立。

這就是突破口

考慮組合數的意義。

$\sum_^n(k\times\sum_^k\sum_^(c_i^\times c_^)$

$=\sum_^n(k\times\sum_^\sum_^k(c_i^\times c_^)$

j和i換了位置之後,

發現,其實i就是列舉的乙個分割點,

然後對於選擇的k-1個數,在1~i個數中選擇k-j個,

在i+1~n-i-1個數中選擇j-1個。

好像和$c_^$有些關係。

發現,對於$c_^$中的每個方案。

其實都可以找出0~n-1這n個分界點,然後統計一次。

每個方案被統計了n次。

所以,原式

$=\sum_^nk\times n\times c_^$

已經可以o(n)遞推了。

我們可以用剛才的打表中方法,搞出遞推式,然後迭代出來通項公式。

即可o(logn)求解。

這個可是組合數啊!!不是一般的數。

組合數畢竟有實際的意義。

觀察這個式子的組合意義。

$\sum_^nk\times n\times c_^$

這個k-1和k,n有點麻煩。

提出來:

$=n\times (\sum_^n(k-1)\times c_^)+n\times 2^$

第乙個括號裡面是什麼意義?

對於n-1個數的集合中,所有子集的大小的和。

套路地,我們轉化研究物件。

考慮每個元素被統計了幾次。

就是:$2^=2^$

因為每個數自己必須出現一次,然後其他的數愛出現不出現。

所以,$=n\times( (n-1)\times2^)+n\times 2^$

然後就可以o(logn)計算了。

0.這個式子,我們嘗試用數學知識、組合數公式化簡,發現不容易化簡。然後就要考慮組合數的意義。

1.組合數是乙個有意義的數。這樣的數學式子的推導,可以通過尋找式子的意義來進行化簡。

往往起到立竿見影的效果。

2.打表找規律,要考慮把結果,遞推關係和項的編號放在一起。

組合數學 求組合數

對於求組合數,要根據所給資料範圍來選擇合適的演算法 這道題中所給的資料範圍適合用打表的方法直接暴力求解 先用4e6的複雜度預處理出所有的情況,再用1e4的複雜度完成詢問即可 include using namespace std const int n 2010 const int mod 1e9 ...

數學 組合數學

mod must be a prime const int mod 1e9 7 namespace combinatory ll inv ll x ll fac maxn invfac maxn void initc int n ll a ll n,ll m ll c ll n,ll m ll d ...

組合數學筆記

從n個數中選m個數,每個數至多選一次,方案數 性質 c n,0 c n,n 1 c n,m c n,n m c n,m c n 1,m 1 c n 1,m 楊輝三角 二項式展開 x y n i 0.n c n,i x iy n i 那這裡先說一下楊輝三角 前提 每行端點與結尾的數為1 每個數等於它上...