CF1614E Divan and a Cottage \(\checkmark\)
隨筆
看了半天才懂題意,洛谷翻譯真的是良莠不齊
發現答案不降就做完了?
用動態開點線段樹維護即可?
solution
確實如此(
CF1612G Max Sum Array \(\checkmark\)
隨筆
對於每一種顏色從前到后有遞增的權值系數
不妨貪心的從后往前放使得 \(f\) 最大,每次顯然得放系數最大的
發現如果選擇某個顏色里從后往前數的第 \(i\) 個位置,那么我們應該已經選完了后面的所有位置
具體實現感覺差分下差不多
然后搞搞就行?
solution
確實如此(
CF1611G Robot and Candies \(\checkmark\)
隨筆
一眼網絡流,沒啥前途?
根據 \(x+y\) 的奇偶性分成兩部分做?
然后不會了(
solution
先把問題按 \(x+y\) 的奇偶性分成兩部分
原題的兩種操作 \((x,y)\to(x+1,y-1),(x+1,y+1)\) 可以用新坐標系轉換成 \((x,y)\to (x+1,y),(x+1,y+2)\)
其中新坐標系的 \((x,y)\) 第一維表示原行號,第二維表示原對角線號(\(x+y\))
問題轉化成能向下和向右走
顯然,問題的上界是每列走一條路徑
我們貪心的繼續解決問題
從左往右一列一列掃,如果該列不存在仍未覆蓋的 \(1\) 則跳過,否則需要開一條路徑
對於一條已走到 \((x,y)\) 的路徑的走向
- 第 \(x\) 列仍有點未覆蓋,往下走
- 否則往右走試圖覆蓋更多點
貪心的正確性顯然
總結
這種題應該多試試?轉化題意要徹底點
CF1582G Kuzya and Homework \(\text{鴿}\)
隨筆
稱滿足條件的區間為“好”區間
一開始想分治,感覺沒啥前途
發現對於固定的左端點 \(l\),好區間的右端點屬於某個 \([l,p_l]\)
對於每個素因子考慮,記第 \(i\) 個質因子出現前綴和為 \(S_i(x)\)
那么每個 \(p_l\) 只需要從每個質因子考慮出第一個 \(S_i(r)>S_i(l-1)\) 進行限制即可
顯然目前復雜度是暴力(
然后對於 \(\sqrt W\) 內的質因子可以暴力做,復雜度 \(O(n\pi(\sqrt W))\)
對於其他大質因子,顯然每個位置的貢獻大小最多是 \(1\),且每個位置只能對一個大質數貢獻
然后把所有當前大質數有貢獻的位置拿出來考慮,每個除法的位置都會對前面一段的 \(p\) 有貢獻
由於 \(p\) 對所有貢獻取最小值,這部分我們只要貢獻極長段即可
應該可以用線段樹標記永久化做到 \(O(n\log n)\)
感覺做法好復雜(,還不一定跑得過
solution
好像 std 是 \(O(n\log n)\) 的,被偏序了
大體思路一致,但好像不需要復雜的分討(
全都按上述的第二種方法維護就是 \(O(n\omega(W)\log n)\)
中間的二分/set之類的東西可以用單調棧優化掉,變成 \(O(n\log n)\)
區間取 min 的部分用線段樹標記永久化大概還是兩 \(\log\),可以通過 st 表的思想優化
大概是將 \(n\log n\) 個區間取 min 操作用 st表的詢問方法劈成 \(2n\log n\) 個
區間長度全部變成 \(2\) 的冪次,一直下傳到葉子即可
復雜度優化到 \(O(n\log n)\)
CF1572B Xor of 3 \(\checkmark\)
隨筆
稍微轉換下題意,進行對前綴異或和的一些操作
然后編一編條件就做完了?
solution
確實如此(
但罰了好多次時
CF1613F Tree Coloring \(\checkmark\)
隨筆
就先無腦容斥,分治ntt一手,沒啥思維難度的樣子
solution
確實如此,但沒能一遍默寫對分治ntt,是否要准備一套成熟的板子?
CF1608D Dominoes \(\checkmark\)
隨筆
賽時FST題
記一個串的 BB 個數為 \(a\),BW 為 \(b\),WB 為 \(c\),WW為 \(d\)
一開始直接猜了一手充要條件(\(2a+b+c=n\))覺得很對
發現 dp 轉移可以用生成函數簡單表示
結果實現完看樣例才發現條件不對,以為寄了
但仔細想想,構造了一手方案發現只有一點點小情況需要容斥
賽時的組合數邊界寄了,導致小號沒上 \(\color{orange}{\text{Master}}\),麻了
solution
沒啥好 solution 的,走個流程
CF1585F Non-equal Neighbours \(\checkmark\)
隨筆
從前往后 dp,對於二維狀態的暴力做法試圖用其前綴和狀態直接轉移
發現轉移在單調棧上做就行了
solution
確實如此
好像和題解做法不大一樣?
CF1578L Labyrinth \(\checkmark\)
隨筆
首先肯定在最大生成樹上走
直接按 \(c_i\) 從小到大貪心走?
感覺可能有點問題
solution
考慮 kruskal 重構樹,走法一定是走完一顆子樹再去其他子樹
容易解決
CF1558D Top-Notch Insertions \(\checkmark\)
隨筆
首先假裝進行完插入排序的序列已經得到,稱排完序后的序列每一個元素在原序列的映射為 \(p\)
可以得到一個由 \(<\) 和 \(\leq\) 連成的不等式串
答案的求法實際上很簡單,容易通過生成函數推得一個組合數
我們僅需求得 \(p_i>p_{i+1}\) 的 \(i\) 個數即可
發現顯然這樣的位置只會出現在那 \(m\) 個涉及到的位置里,我們維護出 \(m\) 個涉及到位置的相對位置即可
容易用平衡樹實現
solution
就這么做
