在此。
給你n
nn個字串,其中選擇k
kk個,如果合法則將』?』變成字元(26
2626
個都可以,前提是合法)構成乙個只含小寫字母的字串,求可以變成多少種字串。
合法要求:乙個位置上要不只有一種小寫字母,要不是』?』。
解法:可以用狀壓dpdp
dp或者容斥原理+組合數完成。
首先鋪墊三個內容:交集、並集、集合大小。交集
用符號∩
\cap
∩表示,表示幾個集合中都有的元素。
並集用符號∪
\cup
∪表示,表示幾個集合中所有的元素(不算重複的)。
集合大小
集合大小表示乙個集合的元素個數。比如集合a
aa的元素個數表示為car
d(a)
card(a)
card(a
)或∣a
∣|a|
∣a∣。
然後如果要求多個集合(分別為a1,
a2,⋯
,a
na_1,a_2,\cdots,a_n
a1,a2
,⋯,
an)的並集,有公式
∣ a1
∪a2∪
⋯∪an
∣=∑1
≤i≤n
∣ai∣
−∑1≤
i n∣ai ∩aj∣ +∑1≤ i< j n∣ai ∩aj∩ ak∣− …+(− 1)n+ 1∣a1 ∩a2∩ ⋯∩an ∣\begin\left|a_1\cup a_2\cup\cdots\cup a_n\right|=\sum_\left|a_i\right|-\sum_answer=\sum_^\end answer =i=k ∑na nsi ×(−1 or1) ×cik − 1-1 −1或1 11就是上面公式+ ++或− -−,是奇負偶正。 具體為什麼這麼寫,是因為我們構造了n−k +1 n-k+1 n−k+ 1個交集。然後每個並集分別為cik ansi c_i^kans_i cikan si。原來的再乘以與k kk可能重複的數量cik c_i^k cik 。具體實現時應該加上模數再模,以免負數情況。 一道小水題。假如沒有這個要求每個人都要有乙個特產的限制我們直接可以組合數。我們又發現人 本質上 是沒有區別的,所以容斥的複雜度只有 o n n 個人分 m 個特產,每個特產有 a i 個,人可以不拿特產,的方案數就是把 a i 分成 n 份,而且可以分為 0 份。這個的答案就是 f n prod m... 3.錯排問題 problem 題目描述 n本不同的書放在書架上。其中m本書已經重新擺放好,將剩下的n m 本書也重新擺放,使每本書都不在原來放的位置。求有幾種擺法。輸入資料 第1行兩個數n,m 接下來m行,每行兩個數xi,yi表示原來的第xi本書已經放到了第yi 個位置上資料保證任意兩個x不相同,任... 真的,學了組合數學你會克服公式恐懼症0.0深有體會 設a 1,a2 a n 為有限集合,用 a i 表示集合ai 中的元素個數那麼有這樣的結論 a 1 a2 a n i 1n ai 1 in ai aj 1 i jn ai aj ak 1 n 1 a1 a2 an 總的概括就是奇數個集合的並集累加和...題解 分特產 組合數 容斥
錯排問題 組合數學 容斥原理
組合數學 容斥原理和錯位排列