題目整理 容斥定理 鴿巢原理

2021-08-22 11:39:58 字數 1200 閱讀 5297

【題意】

v_dragon有n棧電燈泡,編號為1-n,每個燈泡都有乙個開關。那麼問題來了

所有燈泡初始時為不亮的

v_dragon分別進行三次操作

每次操作他都選乙個質數x,將編號為x和x的整數倍的燈泡的開關都撥動一下(如果燈為亮,那麼撥動以後燈為不亮,如果燈不亮,撥動以後變為亮)

求最後亮著的燈的數量

【解題思路】

畫一下圖可以知道最後亮著的燈泡的數量如下圖所示

將集合a表示為被a整除的數,集合b為被b整除的數,集合c為被c整除的數。

陰影部分的面積求法:s-ab-ac-bc+3abc

而s=a+b+c-ab-ac-bc+abc 整理得陰影部分面積為a+b+c-2*(ab+ac+bc)+4*abc

【**】

#includeusing namespace std;

int main()

return 0;

}

【題意】

用m個字元組合名字,名字中有姓和名分別為長度為n的字串,姓和名中的字元不能相同,但姓中的字元可以相同,名中的字元也可以相同。

【解題思路】

用f[i]表示姓中含有i個字元

f[1]=1

f[2]=2^n-c[2][1]*f[1](這裡需要運用容斥定理,減去姓中含有1個字元的情況)

f[3]=3^n-c[3][2]*f[2]-c[3][1]*f[1]

f[i]=i^n-(c[i][1]*f[1]+c[i][2]*f[2]+...c[i][i-1]*f[i-1])

姓中的字元搞定後名中的字元就簡單了,最後所有方案數為 c(m,i)*f[i]*(m-i)^n  ,1<=i<=m

【**】

#includeusing namespace std;

typedef long long ll;

const int maxn=2005;

const int mod=1e9+7;

ll n,m,c[maxn][maxn],f[maxn];

void zuhe()

return ans%mod;

}int main()

return 0;

}

同餘定理 容斥原理

小學期的第二天,了解了一下同餘定理。在理解完這個同餘定理以後感覺非常奇妙,可能就是數學的魅力?即 給定乙個正整數m,如果兩個整數a和b滿足 a b 能夠被m整除,即 a b m得到乙個整數,那麼就稱整數a與b對模m同餘 a c的值 b c的值 記作a b mod m 基本應用 1 a b p a p...

容斥原理 鴿巢原理快速入門

在計數時,必須不重不漏。為了使得重疊部分不被重複計算,人們研究出一種新的計數方法,這種方法的基本思想是 先不考慮重疊的情況,把包含於某內容中的所有物件的數目先計算出來,然後把計數時重複計算的數目排斥出去,使得計算的結果既無重複也無遺漏,這種計數的方法稱為容斥原理。公式的解釋 目的是求解m個集合的並集...

鴿巢原理以及Ramsey定理詳解

簡單形式 plain view plain copy print?定理 如果有n 1個物體被放進n個盒子,那麼至少有乙個和紫包含兩個或者更多的物體。定理非常的簡單,但是真正用好這個定理卻需要一定的功底。eg1.以為西洋棋大師有11周的時間備戰一場錦標賽,他決定每天至少下一盤西洋棋,但是為了不使自己過...