日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

组合数学 —— 基本计数原理

發(fā)布時間:2025/3/17 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 组合数学 —— 基本计数原理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

【抽屜原理】

1.內(nèi)容

把 n+1 件東西放入 n 個抽屜,則至少有一個抽屜里放兩件或兩件以上的東西。

從令一角度說,把 n-1 件東西放入 n? 個抽屜,則至少一個抽屜是空的。

2.經(jīng)典應(yīng)用

給出一個含有 n 個數(shù)字的序列,要找一個連續(xù)的子序列,使他們的和一定是 c 的倍數(shù)

假設(shè) sum[i] 存儲整數(shù)序列中的前 i 項和

根據(jù)抽屜原理,以 sum 數(shù)組構(gòu)造抽屜 drawer 數(shù)組,其保存的是最先出現(xiàn)的 sum[i] 的下標,當 sum 的一個元素第二次放入重復(fù)的抽屜時,輸出結(jié)果。

若 sum[i] 是 c 的倍數(shù),直接輸出前 i 項即可,若 sum[i] 不是 c 的倍數(shù),則需要計算 sum[i]%c,此時,sum[i]%c = sum[j]%c,i!=j 肯定存在,即第 j 到第 i 項數(shù)的和為 c 的倍數(shù)。

LL a[N],drawer[N]; LL sum[N]; int main(){LL c,n;while(scanf("%lld%lld",&c,&n)!=EOF&&c&&n){memset(drawer,-1,sizeof(drawer));drawer[0]=0;sum[0]=0;for(LL i=1;i<=n;i++){//計算前綴和scanf("%lld",&a[i]);sum[i]=sum[i-1]+a[i];}for(LL i=1;i<=n;i++){if(drawer[sum[i]%c]!=-1){for(LL j=drawer[sum[i]%c]+1;j<i;j++)printf("%lld ",j);printf("%lld\n",i);break;}drawer[sum[i]%c]=i;}}return 0; }

【加法原理與乘法原理】

1.分類加法原理

做一件事,完成它有 n 類方式,第一類方式有 M1 種方法,第二類方式有 M2 種方法,…,第 n 類方式有 Mn 種方法,那么完成這件事共有 M1+M2+……+Mn 種方法。

例如:從北京到上海有火車、飛機、輪船 3 種方式,火車、飛機、輪船分別有 k1,k2,k3 個班次,那么從北京到上海有 k1+k2+k3 種方式可以到達。

2.分步乘法原理

做一件事,完成它要分成 n 個步驟,第一步有 M1 種不同的方法,第二步有 M2 種不同的方法,…,第 n 步有 Mn 種不同的方法,那么完成這件事共有 M1×M2×M3×…×Mn 種不同的方法。

例如:從北京乘坐火車到上海,需要轉(zhuǎn) 3 次車,每次專車分別有 k1,k2,k3 個班次,那么從北京到上海有 k1×k2×k3 種方式可以到達。

3.聯(lián)系

分類加法原理和分步乘法原理是兩個基本原理,回答的都是有關(guān)做一件事的不同方法種數(shù)的問題。

兩者區(qū)別在于:分類計數(shù)原理針對的是分類問題,其中各種方法相互獨立,用任何一種方法都可以完成這件事;分步計數(shù)原理針對的是分步問題,各步驟中的方法相互依存,只有各個步驟都完成才算完成事情。

分類要依據(jù)同一標準劃分,既必須包括所有情況,又不要交錯在一起產(chǎn)生重復(fù);分步則應(yīng)使各步依次完成,保證整個事件得到完成,既不得多余重復(fù),也不缺少某一步驟。

【應(yīng)用】

根據(jù)研究對象的有無,一般將組合數(shù)學(xué)分為排列問題和組合問題。

其根本不同是排列問題與元素順序有關(guān),組合問題與元素順序無關(guān)。

在排列與組合問題中,經(jīng)常會出現(xiàn)計數(shù)問題,解決計數(shù)問題的思路一般有以下三種:

1)只取需要的。將各種符合條件的情形枚舉出來,再利用加法原理求和。

2)先取后排。將各步符合條件的排列或組合計算出來,再根據(jù)乘法原理求積。

3)先全部取,再減去不要的。利用容斥定理,將各種符合條件的情形枚舉出來,再減去不符合條件的。

關(guān)于容斥定理:點擊這里

【例題】

  • 吃糖果(HDU-1205)(抽屜原理):點擊這里
  • Find a multiple(POJ-2356)(抽屜原理):點擊這里
  • Halloween treats(HDU-1808)(抽屜原理):點擊這里
  • Polycarp's Pockets(CF-1003A)(抽屜原理):點擊這里
  • Lining Up(AtCoder-2271)(分步乘法原理):點擊這里
  • 總結(jié)

    以上是生活随笔為你收集整理的组合数学 —— 基本计数原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。