DTOJ 4746. 我家鑰匙放在哪了

題意

張士超是你在上海音樂學院的基友,關係非常好。你們在五角場附件合租了一間屋子。由於你那麼有錢,一下買了 nn 把相同的鎖,並一下配了 NN 把相同的鑰匙。你用這些鎖並聯鎖住你家的大門,需要同時插入 nn 把鑰匙才能打開。

一天晚上,張士超帶着華師大的姑娘去了閔行。而且還把你們的 NN 把鑰匙全部藏在了一些奇怪的地方。

張士超有 MM 個可能的地方來藏鑰匙,比如地毯,花園,或門口大爺。每處藏匿位置至多可容納 aia_i 把鑰匙,並且有 pip_i 的獨立概率被你找到。當然如果一個位置被你找到了,你就會拿到這裏的所有鑰匙。你必須至少拿到其中 nn 把鑰匙才能回家。

假設張士超按所有合法方案中的任何一種方案放鑰匙的概率相同。現在你希望算出你可以找到鑰匙順利回家的概率,如果這個概率太小,就乾脆打車跑到閔行去把張士超痛扁一頓。

張士超在閔行樂不思蜀,你卻在五角場無家可歸。你必須在2s內算出答案,否則就會在寒風凜冽的國定路被凍死。

998244353998244353 取模。爲避免除法可能出現的問題,請輸出答案乘上合法方案總數的積,即放鑰匙的所有方案中能回家的概率之和。合法方案即一個數組 0biai0 \le b_i \le a_i 滿足 0biai,ibi=N0 \leq b_{i} \leq a_{i}, \sum_{i} b_{i}=N

所有測試數據滿足 1M100,1nNai,1N,ai109,1d107,0pi<998244353N100d,d(ai+1)1 \leq M \leq 100,1 \leq n \leq N \leq \sum a_{i}, 1 \leq N, a_{i} \leq 10^{9}, 1 \leq d \leq 10^{7}, 0 \leq p_{i}<998244353,N \leq 100 d, d |\left(a_{i}+1\right),但並不保證 dNd | Ndnd | n

Other Constraints M,NM,N PointsPoints
ai10a_i \le 10 M6M \le 6 10
n=1n=1n=Nn=N N100N \le 100 5
n=1n=1n=Nn=N 15
pi{0,1}p_{i} \in\{0,1\} N100N \le 100 5
pi{0,1}p_{i} \in\{0,1\} 15
No More Constraints N100N \le 100 30
No More Constraints 20

題解

注意到N100dN\le100d,考慮每個位置先選若干個dd,最後把剩下的分給每個位置,要求每個位置少於dd。考慮nn的限制,如果概率都是0011,即在p=1p=1位置要放的數總和不少於nn;考慮把每一種可能性以概率的積的形式記在DP中,先DP出總共放了iidd,在選的位置放了jjdd,選了kk個位置的概率總和。

剩下的問題在於把xx個數放到MM個位置,每個位置小於dd,前kk個位置放不少於yy個。考慮後者,由於MM較小,考慮枚舉第yy個數在哪個位置,再乘上組合數即可。對於前者,在DP的時候直接容斥,即當前的位置若選了不少於dd個就1*-1。這樣就做完了,效率爲O(n4)O(n^{4})

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章