近期刷題總結 [19 03 30]

目錄

P2495 [SDOI2011]消耗戰 [ 虛樹 ]

P5002 專心OI - 找祖先

P4562 [JXOI2018]遊戲 [ 組合數學 ]

P1505 [國家集訓隊]旅遊  [ 樹剖模板 ]

P4317 花神的數論題  [ 數位DP ]

P3107 [USACO14OPEN]里程錶Odometer [ 數位DP ]

P3527 [POI2011]MET-Meteors [ 整體二分 ]

bzoj2989 [CDQ 分治]

P4064 [JXOI2017]加法 [ 貪心 + 樹狀數組 + 優先隊列]


P2495 [SDOI2011]消耗戰 [ 虛樹 ]

學習虛樹構造方法, 主要就是用棧維護樹上的一條鏈

 

P5002 專心OI - 找祖先

考慮每個點的貢獻

Ans=\sum size[son]*(size[u]-size[son])+size[u]

 

P4562 [JXOI2018]遊戲 [ 組合數學 ]

如果一個數, 它不能被前面任何數篩出來, 我們稱它爲特徵數

發現一種組合的 f 就是最後一個特徵數的位置

我們考慮枚舉特徵數的位置來討論貢獻, 不妨設有cnt 個特徵數

Ans=\sum_{i=cnt}^n (i-1)!*(n-i)!*cnt*C(n-cnt, n-i)

特徵數可以枚舉倍數來篩

 

P1505 [國家集訓隊]旅遊  [ 樹剖模板 ]

 

P4317 花神的數論題  [ 數位DP ]

Ans=\prod _{i=1}^{31}i^{\sum_{j=1}^n[s(j)=i]} 

數位DP就完了

 

P3107 [USACO14OPEN]里程錶Odometer [ 數位DP ]

枚舉需要的那個數, 然後枚舉算重的兩個數, 記憶化搜索就完了

 

P3527 [POI2011]MET-Meteors [ 整體二分 ]

二分答案是肯定的, 我們考慮整體二分

每次將1 - mid 的插入樹狀數組, 然後查詢每一個樹, 如果值大於需要的, 就丟到右邊, 否則丟到左邊

插入的時候維護一個全局指針就可以了

 

bzoj2989 [CDQ 分治]

放到二維平面上, 就是求到一個點曼哈頓距離不超過k的點的個數

發現這些點都在一個正方形內, 把這個正方形轉45度就是垂直的了

然後就是查一個矩陣點的個數, 加上插入點, CDQ分治解決

 

P4064 [JXOI2017]加法 [ 貪心 + 樹狀數組 + 優先隊列]

首先將操作進行排序, 然後二分答案, 如果當前點必須要選, 就選左端點在它之前, 右端點最大的那個 

然後要區間加單點求值, 樹狀數組解決, 右端點最大優先隊列解決

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章