浴谷夏令營2017 8 1基礎數學知識的整理

2022-10-10 14:12:08 字數 3090 閱讀 4897

1.1 排列

1.2 組合

c(n,m)=c(n-1,m)+c(n-1,m-1)

1.3 二項式定理

(a+b)^n=σc(n,i)a^i*b^n-i

例1.1組合數

快速冪1.4四種放球方法

1)n個不同球放入m個不同袋子 m^n

2)n個相同球放入m個不同袋子 隔板法 c(n+m-1,m-1)

3)n個相同球放入m個相同袋子 用球數目遞增判重 f[i][j]=f[i-j][j]+f[i][j-1]

4)n個不同球放入m個相同袋子 f[i][j]=f[i-1][j-1]+f[i-1][j]*j

其中(1)(2)袋子不同,可以直接用計數方法解決

(3)(4)袋子是相同的,可以互相交換,只能用dp解決

2.1 抽屜原理

2.2 加法原理

2.3 乘法原理

2.4 容斥原理

記f(s)表示滿足集合s中至少乙個條件的方案數,g(s)表示滿足集合s中所有條件的方案數,h(s)表示不滿足集合s中所有條件的方案數。

f(s)=σ(-1)|t|-1g(t),其中t為s的非空子集。

通俗地說就是先把滿足乙個條件的都加上,這時候滿足兩個條件的被加了兩次,所以要減掉一次,然後滿足三個條件的被減成0次了,要加上一次…... 還有另一種形式。 

求並集可以轉化為求交集

g(s)=σ(-1)|t|h(t),其中t為s的子集。

通俗地說就是先加上所有方案,然後扣掉不滿足乙個條件的方案,這時候不滿足兩個條件的被扣了兩次,所以要加上一次,然後不滿足三個條件的被加回1次了,所以要扣掉一次……

求交集可以轉化為求補集

例4.1

對乙個n*m的棋盤染色,每格可以是黑色或白色。

要求每行每列都有黑格。

求方案數對10^9+7取模的結果。 n,m<=10^3。

需要滿足的條件是第1行、第2行…第n行、第1列、第2列…第m列都有黑格。

用容斥原理轉化為列舉其中一些條件不滿足,也就是有一些行一些列全是白格。

枚舉行數i和列數j,那麼選出i行j列的方案數是c(n,i)c(m,j),這i行j列全是白格的方案數是2^(n-i)(m-j)。

所以答案就是σ(-1)^(i+j)*c(n,i)c(m,j)2^(n-i)(m-j)。 時間複雜度o(nm)

例4.2

對乙個n*m的棋盤染色,每格可以是黑色或白色。

要求存在一行或一列都是黑格。

求方案數對10^9+7取模的結果。 n,m<=10^3。

需要滿足的條件是第1行、第2行…第n行、第1列、第2列…第m列其中之一都是黑格。

用容斥原理轉化為列舉其中一些(至少乙個)條件都滿足,也就是有一些行一些列全是黑格。

枚舉行數i和列數j,那麼選出i行j列的方案數是c(n,i)c(m,j),這i行j列全是白格的方案數是2(n-i)(m-j)。

所以答案就是σ(-1)i+j-1c(n,i)c(m,j)2(n-i)(m-j)。 時間複雜度o(nm)

上面兩個問題其實是互補的。

容斥出來的式子也是互補的。

其實那兩個容斥的式子就是互補的。

例4.3

對乙個n*m的棋盤染色,每格可以是黑色或白色。

要求存在一行和一列都是黑格。

求方案數對10^9+7取模的結果。 n,m<=10^3。

需要滿足的條件是:

(a)第1行、第2行…第n行其中之一都是黑格。

(b)第1列、第2列…第m列其中之一都是黑格。

先對a用容斥原理,答案變為σ(-1)i-1c(n,i)*有i行都是黑格且滿足b的方案數。

再對b用容斥原理,答案變為σ(-1)i-1c(n,i)*σ(-1)j-1c(m,j)*有i行j列都是黑格的方案數。

化簡一下就是σ(-1)i+jc(n,i)c(m,j)2(n-i)(m-j),其中i,j>=1。 時間複雜度o(nm)

3.1 概率的一些性質

如果事件a和事件b是互斥的,那麼p(a∪b)=p(a)+p(b)。

如果事件a和事件b是相互獨立的, 那麼p(a∩b)=p(a)*p(b),p(a|b)=p(a)。

全概率公式:p(a)=σp(a|b=bi)*p(b=bi)。

貝葉斯公式:p(a|b)=p(b|a)p(a)/p(b)

3.2 期望的一些性質

如果事件a和事件b是相互獨立的, 那麼e(ab)=e(a)*e(b)。

全期望公式:e(a)=σe(a|b=bi)*p(b=bi)。

期望的線性性:e(a+b)=e(a)+e(b)。

例3.1 百事世界盃之旅

每次從[1,n]中隨機乙個整數,問期望隨機多少次可以把1~n都隨機到。 1<=n<=10^6。

如果已經隨機出了k個數,那麼期望多少次可以隨機出乙個新的數呢?

隨機出新的數的概率是(n-k)/n。 記x=(n-k)/n,那麼期望就是1+(1-x)+(1-x)^2+……=1/(1-(1-x))=n/(n-k)。

那麼答案就是n/1+n/2+…+n/n。 時間複雜度o(n)

例3.2 巧克力

有k種顏色的巧克力。每次拿出乙個隨機顏色的巧克力放到桌上,如果桌上有2個巧克力顏色一樣就把它們一起吃掉。

問拿出n個巧克力後桌上恰好有m個巧克力的概率。 1<=n,m<=10^8,1<=k<=100。

用f[i][j]表示i輪之後桌上有j個巧克力的概率。

f[i][j]=f[i-1][j-1]*(k-(j-1))/k+f[i-1][j+1]*(j+1)/k。

打表發現i的奇偶性確定時f[i][j]是收斂的。 i只要列舉到1000就好了。 時間複雜度o(1000*k)

例3.3 骰子

小a有乙個骰子,這個骰子有n面,扔出i的概率是pi。

他扔一次骰子,如果扔到i,那麼他有qi的概率吃一顆巧克力。

現在你看到他吃了一棵巧克力,問他扔出每個數字的概率。 1<=n<=100。

貝葉斯公式:p(a|b)=p(b|a)p(a)/p(b)

5.1 越獄

正難則反

5.2 妖夢拼木棒

巧妙列舉

5.3 牛的idcow ids

用組合數巧妙處理

5.4 錯位排列

遞推或容斥

5.5 硬幣購物

預處理+容斥

5.6 redisgood

期望dp

開源夏令營(1)

前段時間主要做了git的一些配置和熟悉 git pull 從其他的版本庫 既可以是遠端的也可以是本地的 將 更新到本地。git add 是將當前更改或者新增的檔案加入到git的索引中,加入到git的索引中就表示記入了版本歷史中,這也是提交之前所需要執行的一步 git rm 從當前的工作空間中和索引中...

開源夏令營總結

時間過得很快,開源夏令營就要結束了,今天就簡單總結一下這段時間的所學所做。1.研究源 因為專案已經有一定規模,所以第一步肯定是要先弄懂現有專案結構和 邏輯。view層負責把資料顯示出來,包括每一幀的具體資料,和骨骼父子關係等 model,collection會負責資料的驗證和訪問。每當使用者操作時,...

開源夏令營(8)

例如拿標題來舉例,以下兩段 是等效的 一 php the title 二 php echo get the title 注意the permalink 對應的是get permalink 沒有 the 模板標籤大全 常用的模板標籤 php the content 日誌內容 php the title...