3984: 玩具(toy)
3984: 玩具(toy)
題目描述
?
這個故事發生在很久以前,在?IcePrincess_1968?和?IcePrince_1968?都還在上幼兒園的時候。
IcePrince_1968?最近迷上了一種玩具,這種玩具中有兩種零件:圓球和棍子。棍子的兩頭可以插在兩個圓球上的各一個空洞中,從而將兩個圓球連接起來。為了保證玩具的娛樂性,任意一個圓球上的空洞個數總是多于玩具套裝中的棍子數。你可以認為圓球是沒有體積的,所有棍子的長度均為?1。
IcePrince_1968?喜歡這樣玩這種玩具:他先摸出玩具袋里的一個圓球放在地上,然后重復下面的操作?n-1?次:每次從袋中取出一個圓球和一根棍子,然后等概率的從地上的圓球中選擇一個,將該圓球和選擇的圓球用棍子連起來,使得新的圓球在選中圓球的正上方。
IcePrince_1968?對自己搭出的藝術品很滿意,便決定把這個物品送給?IcePrincess_1968?作為生日禮物。然而生日禮物是需要包裝的,因為默認圓球沒有體積,所以?IcePrince_1968?不用考慮包裝盒的長和寬,但是包裝盒的高是需要確定的,這里我們假設?IcePrince_1968?是一個非常節儉的孩子,所以包裝盒的高總是等于藝術品的高度。IcePrince_1968?想知道自己需要的包裝盒的高的期望對質數?p?取模后的值,但他還在上幼兒園,怎么會算呢,于是就請你來幫助他。
?
輸入
?
輸入數據僅一行,包含兩個正整數?n,p,表示最終的藝術品中圓球的個數和模數?p。
?
輸出
?
輸入文件僅一行,一個正整數,表示包裝盒的高的期望對質數?p?取模后的值。
?
樣例輸入
3 998244353樣例輸出
499122178提示
?
【輸入輸出樣例?1?解釋】
三個圓球組成的藝術品,高度只可能是?1?或者?2,所以高度的期望是?1.5,在模?998244353下的期望是?499122178。
【輸入輸出樣例?2】
見選手目錄下的?toy/toy2.in?和?toy/toy2.ans。
【數據規模與約定】
對于?30%的數據,滿足?n<=10,p<=1,000,007;
對于?50%的數據,滿足?n<=20;
對于?70%的數據,滿足?n<=50;
對于?100%的數據,滿足?n<=200,p<=1,000,000,007,p?是質數。
?
?
來源
noip2018模擬-南外
神題,完全不知道怎么想
考場只會dfs枚舉樹的形態
O(n!) 30分
算法三
考慮非指數級的dp。令dp[i][j]表示有i個點按照題目中的方法生成的深度為j的樹有多少棵,轉移用樹上背包,要注意子樹的深度是可以小于j-1的,但至少要有一棵子樹的深度是j-1,所以背包的還要加一個01狀態
?似乎可以想
算法四
預處理dp[i][j]表示i個點的森林,有j個點在第一棵樹的概率,轉移考慮第i個點是否在第一棵子樹中,我們有狀態轉移方程
考慮修改算法三中狀態的含義,令f[i][j]表示有i個點的樹,深度不超過j的概率,g[i][j]表示有i個點的森林,深度不超過j的概率,f[i][j]直接從g[i-1][j-1]轉移來;g[i][j]考慮枚舉第一棵樹的大小k,從一棵樹和一個森林轉移來,同時還要乘上第一棵子樹大小為k的概率,我們有狀態轉移方程:
具體的細節可以見標程。最后只要f[n][j]-f[n][j-1]就可以得到深度為j的樹的概率。
時間復雜度:O(n^3)
?
轉載于:https://www.cnblogs.com/liankewei/p/10358802.html
總結
以上是生活随笔為你收集整理的3984: 玩具(toy)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 树形列(无限级联下拉列的曲线版本)
- 下一篇: RPG的错排