省選題亂做


好久沒更博了。

2020 省選聯考

「聯合省選 2020 A | B」冰火戰士]

找單調增、降的最小值這樣的函數的最大值。

先二分一次找到臨界點,然后最優答案一定存在於左右兩邊,然后再二分一次找到最右側能取到的位置。

用樹狀數組常數小 \(O(n \log n)\)

code

「聯合省選 2020 A」組合數問題

下降冪和組合數結合:

\[{n \choose k} k^{\underline{m}} = {n - k \choose m - k} n^{\underline{m}} \]

如果把 \(f\) 轉為下降冪多項式 \(b\),交換求和順序后,第二層可以化為一個二項式定理的形式。

code

「聯合省選 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\) 類似。

code

「聯合省選 2020 B」幸運數字

差分

code

「聯合省選 2020 A | B」信號傳遞

卡空間的屑狀壓DP

code

「聯合省選 2020 A」樹

按位考慮每個點對祖先的貢獻。

對於第 \(k\) 位,是一個 \(2^{k+1}\) 的循環節(可以理解為模這個意義下加法),並且每 \(2^{k}\) 個切換一個狀態。那么切換狀態的深度滿足模 \(2^k\) 同余,用一個桶記錄一下差分的地方,用天天愛跑步的方法把子樹的貢獻拿出來即可。

code

「聯合省選 2020 A」作業題

枚舉 \(gcd\),算出對應的和。考慮算是 \(k\) 的倍數的生成樹邊權和,然后簡單容斥。

經典用矩陣樹定理,把值搞成 \(1 + wx\) 的形式,最后一次項就是答案。

code

「聯合省選 2020 B」卡牌游戲

若干前綴和最大值

code

「聯合省選 2020 B」消息傳遞

簡單點分治。\(O(n \log n)\)

code

「聯合省選 2020 B」丁香之路

考慮走過的邊形成的圖,起點和終點度數是奇數,剩下都是偶數,給起點終點手動加一個度后,問題變為了再給這個圖加一些邊使得所有點都是偶數,並且聯通。

兩兩奇數度點連邊(注意,這之中的點也都加入聯通塊,可以理解為這之間都連 \(1\) 的邊),這樣一定花費最小,如果不相鄰就會出現交叉,顯然不優。

然后解決聯通問題,考慮聯通整個圖最小代價是最小生成樹,還得保持偶度數,答案貢獻加 \(2\times\) 最小生成樹。

復雜度 \(O(m + n^2\log n)\)

code

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)\)

code

「十二省聯考 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 的空間大一點。

code

「十二省聯考 2019」騙分過樣例

告辭

「十二省聯考 2019」皮配

關鍵是我們並不需要決定具體選擇哪個導師。限制也是陣營、派系的。並且這兩個確定,就能唯一確定一個導師。

所以問題就是給每個學校分配兩個屬性,城市里學校選擇陣營要一樣,因此得一起選,分部 DP,最后合並時枚舉一個維度,剩下一維是一個矩陣和,用二維前綴和 \(O(1)\)

  • 無限制的城市、學校:直接 DP,互不影響最后乘起來 :\(O(nms)\)
  • 有限制的城市、學校:綁在一起 DP:\(O(km^2)\)(或 \(O(k^2s^2m)\)

謝謝,已經寫吐了。

code

「十二省聯考 2019」春節十二響

在子樹結構中,考慮遞歸的先把兒子的最優解找到,然后考慮合並。

這里最優解定義為一個多重集,每個元素集選的一段的最大值。

考慮 \(u\) 的最優解用到的合並一定是兒子的若干最優解,因為不同子樹不存在祖先關系所以互不影響,可以隨意合並。

這樣問題就變成了,有兩個集合,你要將他們合並,一次操作可以是:

  • 各選擇一個集合中的元素,刪除,加入一個元素,值是這倆的 \(\max\)

若合並 \(k\) 次,兩組集合各選擇最大的 \(k\) 個即可。

這樣每次合並,可以使總數減掉一個最大值的 \(\min\),任意調整都會出現減掉的東西更少。

\(\text{set}\) 維護最優解,任意的 \(\text{swap}\)\(O(1)\) 的,合並一個就少一個,復雜度 \(O(n \log n)\)

code

「十二省聯考 2019」希望

絕 望

[六省聯考2017]期末考試

枚舉最晚完成時間,貪心匹配。復雜度線性。

code

[六省聯考2017]組合數問題

化為組合意義:從 \(nk\) 個物品選 \(i\) 個物品滿足 \(i\mod k = r\)\(k\) 很小,矩陣快速冪即可。

md 我個垃圾還想了好久。

code

[六省聯考 2017] 相逢是問候

暴力 80 就離譜。

用擴展歐拉定理把指數降下來,考慮 \(k\) 次迭代,每次模的數是原來的一個 \(\phi\),考慮每兩次 \(\phi\) 至少下降 \(2\) 倍(有一個 \(2\) 質因子,奇數變偶)。

設迭代到 \(1\) 次數是 \(s\)

那么迭代次數 \(> s\) 答案都是一樣的,所以可以暴力改,每個元素最多改 \(\log\) 次,每次改,倒着遞推即可,記得處理邊界即需要加的情況。

這樣是 3 只 \(\log\),考慮同底光速冪,這樣就做到了兩只 log。

code

md 只有這種聯考難度能讓我想出三題正解。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM