退役前的做題記錄 Ⅰ
寫一下卡特蘭數加強數字敏感度:1 2 5 14 42
持續更新到退役(大概
P6689 序列
第一步發現對於左括號個數相等的結果序列,它們的出現概率也相等,這個是可以輕鬆 \(n^2\) Dp 出來的。
第二步我們需要求一個左括號個數確定的隨機序列的最長合法括號子序列期望長度。
掏出我們的重要結論:左括號爲 1,右括號爲 -1,設前綴最小值是 \(Smin\),答案就是 \(n-S_n+2\times Smin\)。
考慮將相鄰的左右括號匹配後消掉會形成這樣的:\())))((\),前綴最小值的絕對值就是這樣右括號的個數,玩一下發現是對的。
觀察發現 \(n-S_n\) 是固定的,我們枚舉 \(Smin\) 就可以得到答案了,那麼用 \(Smin\le k\) 減去 \(Smin <k\) 的方案數就可以得到恰好的方案了,算小於的方案就相當於算不得碰到某條直線的方案數,應用折線法即可。
P4769 [NOI2018] 冒泡排序
做到上面那題想到這題了。
首先題意可以轉化爲計數可以分成兩個上升序列的排列個數。
這個東西又可以轉化爲經典的格子走路問題,我們貪心的這樣轉化:維護兩個上升的序列,選出排列的第一個數開頭當第一個序列,另一個序列當成開頭爲 0,每掃到一個數能放第一個序列就放第一個序列,否則放第二個,不能放就說明不合法。
發現這樣一件事:第一個序列相鄰兩個數 \(x,y\),那麼 \((x,y)\) 之間的數在第二個序列是連續且上升的,然後就可以看成格子走路了,從 (0, 0) 開始走路,走到 (n, n),只能向上向右走,每個向右拐點代表着第一個序列填了一個 y 座標的數,向右平走表示在第二個序列裏填了下一個該填的數(這個數是當前最小的未出現過的正整數),一個限制是我們不可以越過 y = x 這條線。
所以這題也不難了,要求字典序要大於 q,我們就枚舉一個前綴和 q 相等的部位,強制下一位大於 q 即可。
P6827 「EZEC-4」括號
這題 160 多個 A 的,出題組 A 了 150 多發真是喪心病狂。
暴力 dp 應該都會,以爲有什麼高妙的少一維狀態,沒想到是每次多跳一些。
狀壓預處理,暴力匹配每次跳一步,預處理以後我們可以一次跳多步,就這樣卡過去的???