bzoj 500題紀念
總結一發題目吧,挑幾道題整理一下,(方便拖板子)
1039:每條線段與前一條線段之間的長度的比例和夾角不會因平移、旋轉、放縮而改變,所以將每條軌跡改為比例和夾角的序列,復制一份翻轉后的序列,直接上AC自動機即可。注意特判
1125:hash+splay
1183:digit-product只可能是2,3,5,7的積,枚舉digit-product進行dp即可
1301:每個點和每個邊只能被刪除一次,隨便搞
1313:上下界最大流
1471:考慮容斥,枚舉兩條路徑相交的位置
1512:tarjan縮點+dp
1519:考慮最后一次耕的地是長,那么可以發現確定左右邊界時上下邊界是一定的,於是就可以\(O(n^2)\) dp了
1533:單調隊列
1535:字符串相關——
1733:k短路
2090:記錄到某位置的最長序列長度,用線段樹優化
2093:倍增
2103:考慮枚舉控制范圍的分割線,兩邊都可以\(O(L)\)計算重心——向最大的孩子方向移動
2213:求任意兩個字母前綴差的最小值、最大值
2288:選的肯定是整段的正數或者負數
2289:二分相交區域的橫坐標,如果當前\(x=x0\)的直線與所有圓有交點,且交集非空,則輸出yes,否則由於相交區域連續,通過圓的位置、斜率它確定在哪一側
2398:這種題明顯就是把兩個子問題擰在了一起,splay+位運算LCP
2614:因為只有當碟子上的數與k的gcd不為一時,才對乘積有貢獻,注意到k的約數個數很少,所以可以把相同gcd的碟子壓在一起。似乎要離散化。
2969:分別計算每一個位置的期望,加起來即可
2704:裸插頭dp
2794:考慮離線,枚舉a,m,f[i]表示用b盡可能大的物品能否湊出i
2916:考慮求答案的補集
2928:考慮分治
2945:一道結論題
2949:嘗試\(O(n^2)\)模擬,每次暴力嘗試將某一只螞蟻向上移動即可
2951:掃描線+線段樹
2979:有下界最小流
2085:hash求重疊長度,然后上倍增floyd
3007:轉化為最小邊問題
3029:暴力上dp
3060:先加入大於k的點之間的邊,然后再去加其他的邊,貪心即可
3188:標記技巧
3283:快速冪,擴展bsgs,擴展lucas 三合一
3325:用類似mancacher的方法求出相同的字符,並查集維護
3337:塊狀鏈表模板題
3347:容斥,分別考慮每種高度的貢獻,該貢獻由:高度為該高度的行數、列數,高度大於該高度的行數、列數
3702:線段樹合並
3834:考慮枚舉答案,推一下式子就會發現可以分塊了
3907:統計越過\(y=x\)的路徑,將這些路徑第一次越過該線的部分按\(y=x\)翻轉
3429:后綴數組
4269:線性基
4305:枚舉公約數,容斥出解
4407:什么時候再去推發式子
4491:線段樹維護
4499:線性函數套線性函數還是線性函數
4578:枚舉分界線
4589:裸異或FWT
4612:分成兩段進行枚舉:枚舉l,枚舉b
4621:最終一定是連續的,所以就可以dp了
4668:並查集奇技淫巧
4688:矩陣快速冪
4691:搜索+壓位
4698:對查分序列建后綴自動機
這些都是AC人數不超過185的題
感覺隨便挑一道題就是省選模擬呢~
接下來干什么呢~繼續刷bzoj?刷codeforces?
不造&