生成函式練習記錄 題解

2022-09-21 22:45:14 字數 834 閱讀 6077

最近把nflsoj上的題都賀完了,之前既定要補的題也已完成,算是步入小康,終於有了點自己可以支配的時間了。

這篇markdown中會記錄我這段時光寫過的組合計數題目,大概都會與生成函式相關。

題目沒有按照難度排序。

題目會給多個鏈結,用以照顧對oj有不同口味的人士。

題目記錄均會在通過題目後開始撰寫,因此無法保證完全按照思考過程來,但正確性和邏輯性會比較好。

很可能有typo,有細節的紕漏亦可指出。

直接給出 \(\theta(n)\) 做法

\[\begin

answer&=\sum_^n\sum_^n \cdot 2^j \cdot j!

\\&=\sum_^n\sum_^n\sum_^j \cdot 2^j \cdot k^i \cdot \binom \cdot (-1)^

\\&=\sum_^n( \sum_^nk^i) \cdot \sum_^n2^j \cdot (-1)^ \cdot \binom

\\&=\sum_^n( \sum_^nk^i) \cdot [x^j](\dfrac})

\end

\]先把 \(j\) 列舉的範圍提公升到 \(n\) ,方便交換∑,並且保證斯特林數不變

斯特林數不便處理,並且後面正好有乙個 \(j!\) 展開後可以消掉一項,用組合意義展開,這裡發現即使當 \(j \geq i\) 的時候展開的結果還是對的

\(i\) 出現的最少,把它交換到裡面去。

後面的那部分式子是生成函式的加法復合,使用生成函式表示出來

∑裡左邊那項可以 \(\log n\) 計算,用線性篩篩出質數字的冪後可以做到線性。右邊那項把上面展開,然後短多項式求逆,也可以做到線性。

隨機函式 生成驗證碼練習

import random 借用內建函式 def yzm 定義函式 code 用 拼接 for i in rangge 4 使用for迴圈增加次數 range生成數字 num random.randit 0,9 用固定內建函式,取值 zum chr random.randint 65,90 個人固定...

IO流 學生成績記錄練習題

從score.txt檔案中讀取資料,檔案中每行是乙個學生的成績記錄,內容格式為 姓名 英語成績 語文成績 數學成績 j a成績。要求 按總分從高到低排序後顯示出每個學生的各科成績和總成績。score.txt檔案內容例如 姓名 英語 語文 數學 j a 羅霄 68 95 52 81 劉苗苗 97 97...

記錄CSP題解

化學方程式 string fomular unordered mapint mymap struct element void processword string word,int type if flag num 1 while lo hi elseif isupper word lo lo e...