【省選模擬】20/06/18

AA

  • 大概就是考場思路,當時覺得細節太多沒寫完
    考慮從後向前 dpdp 出當前的合法長度,從前向後維護可能成爲答案的串的集合,需要根據這個 dpdp 判一下合法性,注意到若一個串不是另一個的前綴一定可以刪除一個
    串的集合是一個串和它的若干個前綴,用一個串和一個集合可以表示一個狀態
    考慮當前的串拼接進去,需要把不是前綴的串給篩掉,發現只需要求當前串串頭和答案串每個位置的 lcplcp,用 ZalgorithmZ-algorithm 解決
    反思了一下爲啥我的做法細節麻人,就是我插入串的時候要彈前面的,彈後面的
    而題解求出了一個最小值(字典序相同長度大的小),所以只需要把集合中的點拿去更最小值比就可以快速更新,CodeCode

BB

  • 考慮限制是不經過兩條直線(nn 維空間),即 fif_i 爲第一次走到第一條直線不經過兩條直線的方案數
    gig_i 爲第二條,記總方案數爲 ai,bi,cia_i,b_i,c_i 表示從 ff 走到 ff 上,從 ff 走到 gg,以及從 gg 走到 ff 上,進行容斥,容易寫成生成函數的形式:
    F=AAFCGG=BAGBFF=A-AF-CG\\ G=B-AG-BF
    答案是 GG 的末項,注意其中 A0=0A_0=0,解出來多項式求逆即可,CodeCode

CC

  • zxyzxy 的神仙做法,考慮對每個點求出它爲一個端點的答案,枚舉另一個端點,統計外面路徑的個數,注意到可以 dsu on treedsu\ on\ tree 預處理子樹內部或子樹外部的方案數,點分,要加上鍊上掛的子樹內部的路徑條數,拆一下項就可以快速維護,CodeCode
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章