暑假模擬17
\(T_A\) 符號化方法初探
簡單題,不講
\(T_B\) 無標號 Sequence 構造
這題有點逆天。
先看正解:考慮給等式左右同乘一個 $ 1 \times n $ 的矩陣,矩陣隨機生成,這樣複雜度變為了 \(O(n^2)\) 。至於正確性,根據不知道什麼定理,錯誤機率為 $ 998244353^{-1} $
賽時做法:一個錯解。考慮我們只關注C矩陣每一行和每一列是否合法,稍微最佳化一下即可做到 $ O(n^2) $ 的優秀複雜度。不保證正確性。有辦法hack這個做法,一個合法矩陣,如果,有兩列的相同行數加和相同,那麼交換這幾個數就行。但再隨機資料下機率很小,僥倖AC。
\(T_C\) 無標號 Multiset 構造
抽象。
注意到 k 很小,既然每個點要麼選要麼不選,每一列的狀態數只有 $ 2^k $ 個,也並不多。要求圖聯通,重點是不同行之間的點聯通。 \(n\) 很大,還是考慮從 \(k\) 入手,發現各行聯通情況至於出現了哪些狀態有關,與每種狀態出現幾次無關,爆搜每種狀態選或不選,複雜度 $ O( 2^{ 2^k } ) $ ,並判斷這種方案是否聯通,統計合法方案種類數,開 $ 2^k $ 個桶表示選擇其中 \(i\) 個狀態的合法方案數。這裡有 \(n\) 列,列舉只出現了 \(m\) 種狀態,相當於 \(n\) 個小球放進 \(m\) 個盒子,每個盒子至少放一個的方案數,簡單容斥一下即可。
發現 $ k=5 $ 時, $ 2^{32} $ 不可過,考慮打表,只要 \(2^k\) 個狀態即可
表
int cnt1[3]={1,2,1},cnt2[5]={1,4,5,3,1},cnt3[9]={1,8,22,43,60,53,28,8,1};
int cnt4[17]={1,16,95,453,1595,4079,7775,11325,12838,11436,8008,4368,1820,560,120,16,1};
int cnt5[33]={1,32,406,4235,32705,191285,882931,3324441,10460210,27984080,64454950,128984430,
225771000,347364500,471432800,565722120,601080310,565722715,471435600,347373600,
225792840,129024480,64512240,28048800,10518300,3365856,906192,201376,35960,4960,496,32,1};
\(T_D\) 有限制的構造
簡單DP,反思自己為什麼沒有場切。設 $ dp[i][j][k] $ 為前 \(i\) 個遊戲,選擇 \(k\) 個遊戲,畫面質量之和為 \(j\) 的最小不可玩度,轉移顯然。
賽時不敢想 \(T_D\) 正解,挺遺憾的。