線段樹題之wows

2022-03-18 06:46:18 字數 1198 閱讀 7279

●模擬考試的一道似乎是學長出的題,還不錯,挺考**能力的。以此記錄。

●題目以被上傳(改了改說法),6128 lence的方塊們

(像手紙一樣長的貼圖……)

●題目大意:

有橫向排布的n個點,每個點初始值都為0。

有m個操作(先輸入操作型別com):

com==0:修改操作(接著輸入l , r , a , k , p),解釋見輸入格式。(提供圖幫助理解)。

com==1:查詢操作(接著輸入l , r),輸出區間[ l , r ]內最長的等差數列的項數(要連續)。

●題解:

注意到是要找等差數列,即答案對應的區間個元素的差值應相等。即可以前後兩元素的差值建線段樹,然後維護區間最長的差值相等的一段。

(是不是思路很清晰,然而噁心的**卻搞了我大半個上午。)

●附上**:

#include#include#includeusing namespace std;

struct segmentt[400005];

int n,m;

void pushdown(int u)

void pushup(int u)

}void build(int u,int l,int r)

; if(l==r) return;

int mid=(l+r)/2;

build(u*2,l,mid);

build(u*2+1,mid+1,r);

}void add(int u,int l,int r,int x)

if(t[u].lazy) pushdown(u);

int mid=(t[u].l+t[u].r)/2;

if(l<=mid) add(u*2,l,r,x);

if(mid1) add(1,l-1,l-1,a);

if(p-1>=l) add(1,l,p-1,k);

if(r-1>=p) add(1,p,r-1,-k);

if(r

} if(com==1)

}return 0;

}

線段樹之模板題

關於線段樹 首先應該是建樹 c國的死對頭a國這段時間正在進行軍事演習,所以c國間諜頭子derek和他手下tidy又開始忙乎了。a國在海岸線沿直線布置了n個工兵營地,derek和tidy的任務就是要監視這些工兵營地的活動情況。由於採取了某種先進的監測手段,所以每個工兵營地的人數c國都掌握的一清二楚,每...

線段樹 模板題

problem description 已知乙個數列,你需要進行下面兩種操作 1.將某區間每乙個數加上x 2.求出某區間每乙個數的和 input 第一行包含兩個整數n m,分別表示該數列數字的個數和操作的總個數。第二行包含n個用空格分隔的整數,其中第i個數字表示數列第i項的初始值。接下來m行每行包含...

線段樹(模板題)

對於一條數鏈,二分,然後二分,然後再二分 給定一數列,規定有兩種操作,一是修改某個元素,二是求區間的連續和。數列元素初始化為0 輸入 輸入資料第一行包含兩個正整數n,m n 100000,m 500000 以下是m行,每行有三個正整數k,a,b k 0或1,a,b n k 0時表示將a處數字加上b,...