原创 POJ 2482 Stars in Your Window (線段樹掃描線)

題意: 給定n個星星的座標(x,y)以及亮度c ,求用一個寬W,高H的框(不含邊界),能框住的星星的亮度總和的最大值爲多少。 ( 0<= x,y <2^31 , 1<=c<=100    , 1<=W , H <= 1000000  

原创 對樹狀數組的一點理解

樹狀數組                         By 巖之痕 一、概述 樹狀數組是一種 用數組進行存儲的 自下而上進行操作的  多叉樹。 以下敘述中,A爲原數組,C爲樹狀數組所用的數組,B爲特殊情況需要用到的輔助數組。 最基本的

原创 POJ 2155 Matrix (二維樹狀數組)

題意:給一個N*N的零一矩陣,每個操作詢問某點的值或者翻轉一個矩形區間。 思路:轉換題目,新建A矩陣,A矩陣中每一點的值表示,以這一點爲左下角的特殊矩形被翻轉的次數, 然後用容斥原理把翻轉一個矩形表示成翻轉四個特殊矩形(以矩陣右邊界和矩

原创 Codeforces 19D. Points ( 非遞歸線段樹套SBT + 離散化 )

題意: 給定最多20萬個操作,共3種: 1.add x y         :加入(x,y)這個點 2.remove x y  :刪除(x,y)這個點 3.find x y         :找到在(x,y)這點右上方的x最小的點,若x相

原创 URAL 2052 . Physical Education (數位DP + 二分)

題意: 將1到n ,進行一種特殊的排序,設SOD(x) 是 x 的所有數位上的數字之和,比如SOD(67)=6+7=13 排序原則:對於兩數a,b.  若 SOD(a)不等於SOD(b) 則 SOD小的排在前面。 若SOD(a)等於SO

原创 Codeforces 739C.Alyona and towers (線段樹/非遞歸線段樹)

題目鏈接:http://codeforces.com/contest/739/problem/C 題意:給定30萬個正整數,和30萬個操作,每次操作後輸出查詢結果。 操作:每次把從L到R的數都加上D 查詢:最寬的Hill的寬度。定義:先遞

原创 線段樹從零開始

線段樹從零開始 By 巖之痕 一:爲什麼需要線段樹? 題目一: 10000個正整數,編號1到10000,用A[1],A[2],A[10000]表示。 修改:無 統計:1.編號從L到R的所有數之和爲多少? 其中1<= L <= R <

原创 Codeforces 633 G. Yash And Trees (dfs序+線段樹+位圖)

題意: 給定一顆根爲1的樹(十萬節點),每個節點有一個價值value。 然後進行兩種操作(十萬操作): 1. 問一顆子樹上的所有節點的價值在對m取餘數之後,會產生多少種不同的質數。 2.將一顆子樹上的所有節點的價值value都加上x

原创 Codeforces 633E. Startup Funding (概率+非遞歸線段樹/Sparse Table +二分)

題意: 題目有一點點複雜。  有n(1 <= n <=10^6)周,第A周有V[A]和C[A]兩個值,題目定義了區間[L,R]對應的值的計算p(L,R)=min(100*max(區間內的V),min(區間內的C))。 現在,對於每個L

原创 Codeforces 650D. Zip-line (動態LIS) (可持久化線段樹 或 離線+樹狀數組)

題意: 給定一個長度爲n的數列,和m個詢問,每個詢問的格式是:將原數組的第a個數改成b之後,數組的最長上升子序列(LIS)的長度。 做法:可持久化線段樹  或  離線+樹狀數組 令 h[ ] 爲原數組,LIS_L[ i ] 表示以 i

原创 動態規劃求小於等於n的質數個數

動態規劃公式來自Codeforces 665F 這題的官方題解,沒有看懂題解中是怎麼計算的,於是自己寫了個計算的程序。 首先,P[ t ] 表示第 t 個質數,P[1]=2 , P[2]=3, P[3]=5 等 狀態: D[ n , m

原创 SQLite分析之WAL機制

SQLite分析之WAL機制 一:WAL簡介 Write Ahead Log 簡稱WAL,也就是預寫日誌。是實現事務原子提交的一種方法。 當事務對數據庫進行修改時,將修改後的頁面存入WAL文件中,而不寫回原數據庫。 WAL文件從數據庫的第

原创 Codeforces 612 D. The Union of k-Segments (非遞歸線段樹+離散化)

題意:給定一堆線段,求最後重疊了k次或以上的線段和點。 先操作,最後一次下推標記,所以儘管是區間修改,非遞歸寫起來還是很簡單。 維護兩個線段樹,一個維護線段的覆蓋,一個維護點的覆蓋。 對於線段[L,R],點修改的區間是[L,R], 區間

原创 WOJ 1618 - Magic Array (線段樹+單調棧)

題意:給定n(n<=500000)個數,A[1],A[2],...,A[n]。求所有子區間的 (最大值*最小值*長度)之和,對 10^9 取餘數。 思路一:暴力     時間複雜度O(n^3)    超時 枚舉所有子區間,然後遍歷一遍來

原创 線段樹詳解 (原理,實現與應用)

線段樹詳解 By 巖之痕 目錄: 一:綜述 二:原理 三:遞歸實現 四:非遞歸原理 五:非遞歸實現 六:線段樹解題模型 七:掃描線 八:可持久化 (主席樹) 九:練習題 一:綜述 假設有編號從1到n的n個點,每個點都存了一些信息