題目描述
有 $n$ 個無區別的鎖, $n$ 把無區別的鑰匙都被藏, $m$ 個藏鑰匙的地方,每個藏鑰匙的地方最多藏 $a_i$ 個鑰匙,並且這個地方被發現的概率為 $p_i$ ,求所有藏鑰匙的方案能夠找到至少 $n$ 個的概率之和。
資料範圍
所有測試資料滿足 $1 \leq m \leq 100,1 \leq n \leq n \leq \sum a_, 1 \leq n, a_ \leq 10^, 1 \leq d \leq 10^, 0 \leq p_<998244353,n \leq 100 d, d |\left(a_+1\right)$ ,但並不保證 $d | n$ 或 $d | n$ 。
題解
orzsz
有個關鍵資訊是 $d |\left(a_+1\right)$ 和 $n \leq 100 d$ ,所以我們可以先對每個藏鑰匙的地方分配 $d$ 倍的鑰匙數量,然後每個位置最終只能再放 $[0,d)$ 把鑰匙。然後我們考慮如果我們知道了每個位置第一步分配的情況,那後面再分配的話我們需要知道被發現的位置一開始分配了多少,這樣才能夠去保證這些被發現的位置鑰匙之和至少為 $n$ 。
所以我們考慮 $\text$ : $f[x][i][j][k]$ 表示前 $x$ 個地方,有 $k$ 個位置最後會被發現,這 $k$ 個位置總共分配了 $j \times d$ 把鑰匙,這 $x$ 個位置總共分配了 $i \times d$ 把鑰匙。轉移顯然。
然後假設第一步分配後還有 $x$ 把鑰匙沒有被分配,被發現的 $k$ 個位置中還差 $y$ 把鑰匙達到 $n$ 。我們可以把這 $k$ 個位置放在前面,考慮先分配 $y$ 把鑰匙在這 $k$ 個位置上。由於 $m$ 很小,且鑰匙無序,所以可以列舉 $u$ 表示第 $y$ 把鑰匙放在 $u$ 上,且 $y-1$ 把鑰匙放在了 $u$ 及之前, $x-y$ 把鑰匙放在 $u$ 及之後的位置,如果我們不考慮分配不小於 $d$ ,那就可以隔板法。不小於 $d$ 的話考慮容斥,可以考慮在原本 $\text$ 的時候就進行容斥,即轉移的時候考慮這個位置之後分配會不小於 $d$ 的話,那就強制這個位置多選乙個 $d$ 容斥轉移即可。這樣後面再分配直接隔板就可以了。
效率: $o(m^2 \times (\frac)^2)$ 。
你把手機放在哪兒?
對我們當中的大多數人來說 過去不常帶在身上而如今卻隨身攜帶的東 西只有手機。我記得11年前當我買了有生以來首部手機時同事們不屑的神情 然而現在就連我最內向的朋友也擁有了自己的手機。變化真是大啊 自從100多年前手錶誕生以來 我想不到還有什麼東西能夠成為生活中如此不可或缺的必需品。但這又引出了另乙個問...
解答 生產日期最近的麵包會放在哪?
前不久發了乙個問題 這個問題首先要從兩種角色的人的心理去考察。對於理貨員來說 1 會讓商標容易讀,躺倒了放字就橫著了,不容易讀,必然是按照商標容易讀的方法放,宮頤府的麵包豎放易讀。2 會放得整齊,亂放的肯定是顧客看了不合適又放回的,因此亂放的,比如躺著放的一般是顧客所為。3 從後開始放,這樣可以保證...
mysql索引存放在哪個檔案 Mysql 索引
開門見山,直接上圖,下面的思維導圖即是現在要講的內容,可以先有個印象 常見索引型別 實現層面 索引種類 應用層面 聚簇索引與非聚簇索引 覆蓋索引 最佳索引使用策略 1.常見索引型別 實現層面 首先不談mysql怎麼實現索引的,先馬後炮一下,如果讓我們來設計資料庫的索引,該怎麼設計?我們首先思考一下索...