有 \((n+m+k)\) 盞燈,各有不同的編號與開關。其中有 \(n\) 盞亮著的, \(m\) 盞暗燈, \(k\) 棧壞的燈。亮燈按下開關將變成暗燈,暗燈按下開關將變成亮燈,壞燈無論如何按開關都是暗燈。求操作嚴格 \(t\) 次後,所有燈都是暗燈的方案數。結果對 \(10^9+7\) 取模。
\(n,m\leq 5\times 10^3,t,k\leq 10^\)
對於數列 \(\\) 設 \(egf(a_n)=a^e(x)\) 表示其指數型生成函式
設 \(ans[t]\) 表示操作嚴格 \(t\) 次的方案數,不難寫出方程:
考慮 \(t\) 個位置中,先選擇 \(p\) 個位置給所有亮燈,再選 \(q\) 個位置給所有暗燈,最後選 \(r\) 個位置給所有壞燈
\(\displaystyle ans[t]=\sum_
\left(
\begint\\
p,q,r
\end
\right)
f_n[p]g_m[q]k^r\)
其中:\(f_n[p]\) 表示操作 \(p\) 次,讓亮著的 \(n\) 盞燈全部變暗的方案數
\(g_m[q]\) 表示操作 \(q\) 次,讓暗著的 \(m\) 盞燈全部仍是暗的方案數
考慮到 \(\displaystyle \left(
\begint\\
p,q,r
\end
\right)=,(t-p-q-r)!=0!=1\)
整理式子得 \(\displaystyle =\sum_\cdot \cdot \)
因此有 \(ans^e=f_n^e\cdot g_m^e\cdot egf(k^r)\)
因為 \(\displaystyle egf(k^r)=\sum_^\infty x^r=\sum_^\infty (kx)^r=e^\)
故接著考慮 \(f_n^e\) 與 \(g_m^e\)
對於 \(f_n^e\) ,我們不難列出轉移式子:考慮第乙個亮的燈按開關次數,顯然必須按奇數次;則剩餘 \((n-1)\) 個開關的方案數,等價於只有 \((n-1)\) 個開關的方案數
即 \(\displaystyle f_n[p]=\sum_^p
\left(
\beginp\\
i\end
\right)f_[p-i][2\nmid i]\)
整理得到 \(\displaystyle =\sum_[j]\over j!}\cdot \)
故兩邊取 egf 得到 \(\displaystyle f_n^e=f_^e\cdot (\over 2})\)
又因為 \(\displaystyle f_1[p]=[2\nmid p]\rightarrow f_1^e=\over 2}\)
因此遞推得到 \(\displaystyle f_n^e=f_1^e\cdot (\over 2})^=(\over 2})^n\)
對於 \(g_m^e\) ,我們同樣考慮第乙個暗燈按開關只能為偶數次,故同樣可列出轉移方程:
\(\displaystyle g_m[q]=\sum_^q\left(
\beginq\\
i\end
\right)g_[q-i][2\mid q]\)
同樣整理可得 \(\displaystyle =\sum_[j]\over j!}\cdot \)
因此 \(\displaystyle g_m^e=g_^e\cdot (\over 2})\)
同樣因為 \(\displaystyle g_1[q]=[2\mid q]\rightarrow g_1^e=\over 2}\)
故同樣的 \(\displaystyle g_m^e=g_1^e\cdot (\over 2})^=(\over 2})^m\)
回到原式,我們現在得到了:
\(\displaystyle ans^e(x)=(\over 2})^n\cdot (\over 2})^m\cdot e^\)
將右邊展開得 \(\displaystyle ans^e(x)=-1)^n\cdot (e^+1)^m\over 2^}\cdot e^\)
GDSOI2015的某道題目
看到這個 3 i 就覺得很奇怪的樣子.為什麼一定要是 3 i 而且不能重複使用.不能重複使用就代表不會產生進製,那麼一定是若干個 3 i 相加減的式子.仔細觀察,我們發現這是乙個最短路徑的問題,每個技能就是一條有向邊,考慮要求能夠用其他技能組合出來當前的技能,也就是說找到一條路徑使得從當前技能的 a...
某比賽的某些題目
這裡我只寫一些認為應該寫報告的題目。像那種5分鐘敲出 的題就不寫了。感謝 xianbin5組織這場比賽,orz 題目1 給一些資料,建議一顆排序二叉樹。然後找到某個節點的祖父節點 父節點的父節點 n 50000 題解 描述很簡單,而且可以很簡單的敲出來。但是注意資料量。所以這裡要用到特殊的東西。乙個...
一道this的題目
請問下面 中的this值指向的是全域性物件還是物件o?function f return c var o new f console.log o.constructor.name object這裡的this指向全域性物件,因為 c call without new。這裡用正常的方式呼叫的函式 c 所...