2018 12 17 2018 12 23做題記錄

2021-09-03 10:29:23 字數 1772 閱讀 7851

周一&&周二

學習了在樹上查距離乙個點距離為k的聯通塊的技巧:

動態點分治,注意往上查的時候要去重

例題:bzoj

做了一些月賽題:

bzoj 5075:很巧妙的題。m=1時,分類討論n%3=1,2,0,發現中間的數都是可以確定的。m>1時可以對每行求和,壓縮成只有一列的情況,所以中間的地雷數是確定的。

寫錯了幾個細節,要了資料才看出來。寫題的時候要全神貫注!

bzoj 5076:帶修改主席樹,每個點的價值是i-pre[i],也可以轉化成帶修改二維數點用cdq做

[lydsy1806月賽]:

bzoj 5386:按照題目給出的構造,發現答案=p - 2^(log2§).

bzoj 5387:把樹分層,從外向內「剝」,選前[k/2]層,外層點一定比內層點多,k為奇數可以多選乙個

bzoj 5388:直接列舉質數,暴力即可

bzoj 5390:離線,把詢問按r排序。xy倒著做一遍

codeforces:

1088 f

注意看對題!

題意中保證對任意x,存在y,a[x]>a[y]。可以發現,從最小值開始,樹上的權值是遞增的。

然後就是每個點只會選它連出最小的邊,一定連向祖先,恰好能構成樹。最小的邊倍增求即可

833 b

題意:把n個數分成k部分,使得每部分價值之和最大。每部分的價值為不同數的個數

直接dp,用線段樹維護轉移。加入乙個新的數,把pre[a[i]]+1,i的權值+1

acs 9

題解先留坑。

遇到應該立即寫的題,理清細節再寫。盡量把題目堆到週末寫、現階段盡力多深入思考!

[lydsy1806月賽]:

bzoj 5789: 把乙個點不能呆的區間分段,求每段中的最短路。用dij更新,除第一段外只需要更新一次,就一定是最優解。o(10(n+q)log)

bzoj 5791:dp[i][j][0,1],表示重量為i,j號物品,是否封口,用是否封口來列舉新增物品的可能性。也可以直接字首和優化

bzoj 5792:顯然字符集=1最優,答案就是出現次數最少的字母(根據抽屜原理,這是下界)

bzoj 5793:把長度為k的合法路徑看成k對x和x+1. f(u,v)=長度-(x,x+1)對數,對每條邊,使相應的f+1,對每個x,x+1,找到他們在樹中的位置,變成矩形加,查詢有多少個為0(區間最小值)的點。掃瞄線做到o(nlogn)

bzoj 5794:求區間最遠點對,資料隨機。凸包上只有logn個點,合併凸包用歸併排序做到o(點數)。然後用st表加log塊大小的分塊(黑科技),使預處理和查詢總共合併凸包的次數降為線性。這個方法可以用於o(n)預處理+查詢求區間最大值只要是不支援差分,但是可以加重的不帶修改的查詢都可以這麼做

關於合併凸包

直接歸併極角序

用求橋的方法方法介紹

關於凸包的更多知識留坑待學

[lydsy1705月賽]:

bzoj 4878:

bzoj 4879:

bzoj 4880:

bzoj 4882

bzoj 4817:

bzoj 4819:

才想了10道!寫了1題還wa了沒調完

總結:這兩天看題的效率仍然不高,學習的時間也不夠多。真的要抓緊時間!要是浪費了時間,就再也無法挽回!

並且,想題的時候還要更加深入些。不要慌著想下一道。定時休息,不要「做最後一題的無用功!」

想題的時候對於題目、資料的各種性質都要考慮,盡量開啟思維,不止會做經典模型,還要能夠發現題目背後的條件和性質,大膽的才結論

KMP做題記錄

題目太長不貼了 這道題很巧妙,給定乙個字串s,求最少在首尾新增幾個字元後,s變為乙個迴圈了n次的字串 n 1 假設我們有乙個迴圈串s abcabcabc 我們根據kmp求一次next陣列,就可以通過next strlen s 得到乙個迴圈節的位置從而求出迴圈節的長度,顯然,迴圈節能被s整除。如果s ...

8 25 9 25 做題記錄

2018.8.25 上午 1.ac 洛谷p1514引水入城 搜尋 貪心 2.ac 洛谷p3918 國家集訓隊 特技飛行 貪心 下午 3.ac 洛谷p1120 小木棍 資料加強版 搜尋 剪枝 4.ac 洛谷p1441 砝碼稱重 dfs列舉 01揹包 2018.8.26 上午 參加模擬賽 下午 1.ac...

8 25 9 25 做題記錄

2018.8.25 上午 1.ac 洛谷p1514引水入城 搜尋 貪心 2.ac 洛谷p3918 國家集訓隊 特技飛行 貪心 下午 3.ac 洛谷p1120 小木棍 資料加強版 搜尋 剪枝 4.ac 洛谷p1441 砝碼稱重 dfs列舉 01揹包 2018.8.26 上午 參加模擬賽 下午 1.ac...