1. 程式人生 > >[線段樹]HDU-1754板子題入門ver

[線段樹]HDU-1754板子題入門ver

uil 開始 圖片 board alt 分享圖片 繼續 || 新的

技術分享圖片HDU-1754

線段樹數組請開到四倍

眾所周知數組開小會導致re tle wa等一系列問題orz

  板子就是板子,數組從零開始或是從一開始都沒什麽問題,就是2*root+1還是2*root+2的問題。query(q)裏的範圍不要搞反了,是詢問範圍包括當前節點的範圍。

  總之線段樹是入門了(吧

  解析board:線段樹是一棵葉子節點為具體數據(1st,2nd,3rd……)其上的節點為所囊括的葉子節點([1,2][3,4]……[1,4][5,8]……)的最值的樹

     build(int root,int l,int r)  建立節點root範圍為[l,r],如果是葉子節點(l==r)則當前root點為具體值,否則遞歸建立並取建立節點的最值

     q(int root,int ql,int qr,int l,int r)  如果已知範圍(即已查詢到該範圍最值的節點)被包括在ql,qr內,返回當前root值;否則繼續向左/右查詢並取最值

     mof(int root,int l,int r,int now,int nw)單點更改  如果已到葉子節點(需要修改的now點),則改為新的nw值(或者加減之類的);否則遞歸左右查找,並更新最值

     區間更改有延遲數組或固定兩種,做到題再寫(是啦就是還不會了啦 |||^ Q

Over.

[線段樹]HDU-1754板子題入門ver