好久沒更博了。
2020 省選聯考
「聯合省選 2020 A | B」冰火戰士]
找單調增、降的最小值這樣的函數的最大值。
先二分一次找到臨界點,然后最優答案一定存在於左右兩邊,然后再二分一次找到最右側能取到的位置。
用樹狀數組常數小 \(O(n \log n)\)
「聯合省選 2020 A」組合數問題
下降冪和組合數結合:
如果把 \(f\) 轉為下降冪多項式 \(b\),交換求和順序后,第二層可以化為一個二項式定理的形式。
「聯合省選 2020 A」魔法商店
論文題。
保序回歸問題:給定數組 \(w, y, p\),同時給一個 DAG,賦值 \(f\),要求賦值后任何一條 DAG 上路徑 \(f\) 遞增,最小化 \(\sum_i w_i|f_i-y_i|^p\)
做法:整體二分,轉化為只選 \(mid, mid+\epsilon\) 的問題(確保這之中不會有最優解),這個是最大權閉合圖模型。選的這個東西類似於求導。
此題:把可以代替 \(A\) 里的一個元素 \(u\) 的點 \(v\),連 \((u, v)\) 的邊。\(B\) 類似。
「聯合省選 2020 B」幸運數字
差分
「聯合省選 2020 A | B」信號傳遞
卡空間的屑狀壓DP
「聯合省選 2020 A」樹
按位考慮每個點對祖先的貢獻。
對於第 \(k\) 位,是一個 \(2^{k+1}\) 的循環節(可以理解為模這個意義下加法),並且每 \(2^{k}\) 個切換一個狀態。那么切換狀態的深度滿足模 \(2^k\) 同余,用一個桶記錄一下差分的地方,用天天愛跑步的方法把子樹的貢獻拿出來即可。
「聯合省選 2020 A」作業題
枚舉 \(gcd\),算出對應的和。考慮算是 \(k\) 的倍數的生成樹邊權和,然后簡單容斥。
經典用矩陣樹定理,把值搞成 \(1 + wx\) 的形式,最后一次項就是答案。
「聯合省選 2020 B」卡牌游戲
若干前綴和最大值
「聯合省選 2020 B」消息傳遞
簡單點分治。\(O(n \log n)\)
「聯合省選 2020 B」丁香之路
考慮走過的邊形成的圖,起點和終點度數是奇數,剩下都是偶數,給起點終點手動加一個度后,問題變為了再給這個圖加一些邊使得所有點都是偶數,並且聯通。
兩兩奇數度點連邊(注意,這之中的點也都加入聯通塊,可以理解為這之間都連 \(1\) 的邊),這樣一定花費最小,如果不相鄰就會出現交叉,顯然不優。
然后解決聯通問題,考慮聯通整個圖最小代價是最小生成樹,還得保持偶度數,答案貢獻加 \(2\times\) 最小生成樹。
復雜度 \(O(m + n^2\log n)\)
2019 十二省聯考
「十二省聯考 2019」異或粽子
前綴和后即兩兩異或前 \(k\) 大值。先轉成有序,然后人為固定一個順序。這里就 \(t_{u,k}\) 表示和 \(u\) 異或第 \(k\) 大的,一開始把 \(t_{i,1}\) 放進去,之后每次拿出 \(t_{u,k}\) 就插入 \(t_{u,k+1}\),找第 \(k\) 大可以建立 Trie 樹 \(O(\log)\) 做到。
復雜度 \(O(k \log n)\)
「十二省聯考 2019」字符串問題
把支配關系放在圖上,然后再用每個 \(B\) 串 \(u\) 和每個 \(A\) 串 \(v\) 滿足 \(u\) 是 \(v\) 前綴,連一條 \((u,v)\) 的邊,邊權是 \(v\) 的長度,可再建一個起始點,向每個 \(A\) 串連邊權長度的邊。答案就是起始點開始圖上最長路。
考慮如何快速連邊。
- 建 SA,按長度最小到大順序,每次插入一個 \(B\) 串時,SA 上的一段區間的 \(A\) 串(可以二分找)向 \(B\) 串連邊,主席樹優化建圖即可。
- 把串都反轉,前綴關系變為后綴,建 SAM,SAM 的 Link 樹上 \(u\) 是 \(v\) 的后綴等價於 \(u\) 是 \(v\) 的祖先,因此 \(u\) 向子樹連邊即可。但需要注意的是,由於 SAM 高度壓縮,但長串不能向短串連邊,因此就要在 SAM 上拆點。我是在 SAM 的每個節點上開個 \(\text{map}\),對應長度統計編號,最后統一建父親向兒子的邊。
復雜度都是 \(O(n \log n)\) 的,不過 SA 的空間大一點。
「十二省聯考 2019」騙分過樣例
告辭
「十二省聯考 2019」皮配
關鍵是我們並不需要決定具體選擇哪個導師。限制也是陣營、派系的。並且這兩個確定,就能唯一確定一個導師。
所以問題就是給每個學校分配兩個屬性,城市里學校選擇陣營要一樣,因此得一起選,分部 DP,最后合並時枚舉一個維度,剩下一維是一個矩陣和,用二維前綴和 \(O(1)\):
- 無限制的城市、學校:直接 DP,互不影響最后乘起來 :\(O(nms)\)
- 有限制的城市、學校:綁在一起 DP:\(O(km^2)\)(或 \(O(k^2s^2m)\))
謝謝,已經寫吐了。
「十二省聯考 2019」春節十二響
在子樹結構中,考慮遞歸的先把兒子的最優解找到,然后考慮合並。
這里最優解定義為一個多重集,每個元素集選的一段的最大值。
考慮 \(u\) 的最優解用到的合並一定是兒子的若干最優解,因為不同子樹不存在祖先關系所以互不影響,可以隨意合並。
這樣問題就變成了,有兩個集合,你要將他們合並,一次操作可以是:
- 各選擇一個集合中的元素,刪除,加入一個元素,值是這倆的 \(\max\)。
若合並 \(k\) 次,兩組集合各選擇最大的 \(k\) 個即可。
這樣每次合並,可以使總數減掉一個最大值的 \(\min\),任意調整都會出現減掉的東西更少。
用 \(\text{set}\) 維護最優解,任意的 \(\text{swap}\) 是 \(O(1)\) 的,合並一個就少一個,復雜度 \(O(n \log n)\)。
「十二省聯考 2019」希望
絕 望
[六省聯考2017]期末考試
枚舉最晚完成時間,貪心匹配。復雜度線性。
[六省聯考2017]組合數問題
化為組合意義:從 \(nk\) 個物品選 \(i\) 個物品滿足 \(i\mod k = r\) ,\(k\) 很小,矩陣快速冪即可。
md 我個垃圾還想了好久。
[六省聯考 2017] 相逢是問候
暴力 80 就離譜。
用擴展歐拉定理把指數降下來,考慮 \(k\) 次迭代,每次模的數是原來的一個 \(\phi\),考慮每兩次 \(\phi\) 至少下降 \(2\) 倍(有一個 \(2\) 質因子,奇數變偶)。
設迭代到 \(1\) 次數是 \(s\)。
那么迭代次數 \(> s\) 答案都是一樣的,所以可以暴力改,每個元素最多改 \(\log\) 次,每次改,倒着遞推即可,記得處理邊界即需要加的情況。
這樣是 3 只 \(\log\),考慮同底光速冪,這樣就做到了兩只 log。
md 只有這種聯考難度能讓我想出三題正解。。