歷時九天,組合數學快要結束了,寫篇部落格總結一下
emmm......眾所周知,數學一直是我的乙個薄弱i項,這次也算是乙個很好的鍛鍊
先列一下這次都用了哪些知識點
1.組合數(廢話)
2.逆元
3.盧卡斯定理
4.資料結構(數狀陣列/線段樹)
5.高精
6.暴力打表,瞎猜規律
先來幾道水題
a.排隊
這題一度讓我體會到高精的恐懼
式子很簡單:(n+2)!*a(n+3,m)-(n+1)!*2*a(n+2,m)
b.perm排列計數
只要把題中的pi>pi/2轉化成pi
i<<1,pi
i<<1|1就好了,二叉樹上簡單的樹形dp,需要用到盧卡斯
式子:dp[i]=dp[i<<1]*dp[i<<1|1]*c(size[i]-1,size[i<<1])
c.地精部落
這題網上有許多解法,這裡只介紹組合數解法
其實和perm的dp差不多,我們可以發現對於k個數來說每個數是多少沒有影響,而每加乙個數只能成為山峰
式子:dp[i][(i-j-1)&1]=∑dp[i][(i-j-1)&1]+1ll*dp[j][1]*dp[i-j-1][(i-j-1)&1]*c[i-1][j];
組合數直接楊輝三角就好了
接下來高能預警
d.集合計數
一道卡了好久的題
直接計算不好解,我們考慮容斥
以c(n,k)*2^2^(n-k)為全集
減去c(n,k+1)*2^2^(i-k-1)×c(k+1,k)
加上
組合數學 求組合數
對於求組合數,要根據所給資料範圍來選擇合適的演算法 這道題中所給的資料範圍適合用打表的方法直接暴力求解 先用4e6的複雜度預處理出所有的情況,再用1e4的複雜度完成詢問即可 include using namespace std const int n 2010 const int mod 1e9 ...
計數 組合數學總結
本文持續更新 對計數,組合數學dp作總結,給出思路,狀態轉移方程,略去 狀態初始值等。1 劃分數 1 m個不可區分的物品分成n份,每份的數量大於等於0,求劃分的方法數。思路 1 若m n,則等價於m個物品劃分為m份。2 否則,若至少存在1份數量為0,則相當於m個物品劃分為n 1份 若每份數量大於等於...
數學 組合數學
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 ...