全部**鏈結
刪去的必然是乙個連續段裡的字元。
如果硬是要維護每乙個顏色的連通塊情況就比較麻煩了。
我比賽的時候的想法是將操作\(i\)的顏色看作二元組\((c_i,i)\)這樣每乙個顏色就不同了。
最終統計答案就是計算\(\sum_ cnt(c,j)\)的值。
用乙個\(map\)從後往前做即可。
乙個比較繁瑣的構造題。
容易發現最終的目標是讓發生進製的地方盡可能多。
因為每一次進製,都會讓數字和\(-9\)。
所以最優的答案一定是個位和\(\geq10\),前面搞出盡量多的pair,使得和\(\geq9\)。
容易想到網路流,顯然是沒有必要的。
只需要貪心地選擇,每次選擇最小的\(\geq9\)的即可。
常規計數題。
首先考慮黑白染色,原問題等價於所有黑點的鄰居都\(
由於將\(p_i\)變成\(n-p_i+1\)仍然滿足條件,所以只需要計算上面那個情況,然後\(\times2\)就是答案。
\(dp_\)表示\(u\)在子樹\(u\)中排名是\(v\)。
轉移用乙個字首和優化即可。
正著做會讓乙個數是否是最小值變得比較難以維護。
考慮倒著做,\(+\)變成\(-\),能被\(-1\)的集合一定不會增元素,求新問題的最小字典序和原問題等價。
倒序維護兩個集合\(a,b\)。
\(a\)為最小值集合。\(b\)為最小值\(+1\)的集合。
每次操作\(i_j\)必然屬於\(a\)或者\(b\)。
事實上如果確定初始的\(a,b\)則最終序列確定,可以發現最優解滿足\(a\cup b=\\)。
考慮另一種理解,在乙個櫃子上相鄰兩層放了物體(櫃子層數無限),每次可以將上層移動到下層,如果後面不會再移動就把這個物品扔掉。
這樣這題就不是那麼困難了。
考慮操作的本質是什麼?
將原數列化成曲線,存在點\((i,a_i)\)。
操作\(l,r\)就是將直線\((l,r)\)上的點給貼到直線上。
但是原問題是整數,還有下取整。不過從實數問題推廣到整數也並不是很難(由於是下取整,只會更優不會更差)。
所以問題就是給你乙個曲線,你需要消掉上凸的部分,形成乙個下凸殼,直接單調棧維護斜率即可。
ARC068 簡要題解
任意一面朝上直接 5 6 5 6 或者 6 5 6 5 然後就沒了 首先把牌張數大於三張的丟到三張以下 設還有兩張的有 k 個 如果 k 是 2 的倍數,那麼可以直接全扔了 如果不是,需要找到乙個只有一張牌的扔掉才能把這 k 個扔掉 拿個桶記一下 長度 geq len 的區間中必然存在 len 的倍...
ARC065 簡要題解
從前往後不好做,那就直接從後往前 考慮設 f i j 為在第一張圖中屬於 i 集合,在第二張圖中屬於 j 集合的點的個數 這樣會 mle 但是又發現有用的 i,j 不會很多,直接 map 存下來就行了 轉化為切比雪夫距離之後直接從起點 bfs 把橫縱座標離散化之後存在 set 中,找到乙個就刪掉他,...
ARC063 簡要題解
模擬即可 算下有多少個極大差就行了 考慮乙個點到另乙個點的路徑是什麼情況 必然是一段上公升的加一段下降的,單增單減也行 然後就可以考慮乙個貪心策略了 每次選出最小的,給他周圍沒有附權值的附乙個 這個最小點權值 1 的權值 不難發現這樣是滿足上面那個條件的 不合法情況中間判一下就行 考試考過,想出來了...