●模擬考試的一道似乎是學長出的題,還不錯,挺考**能力的。以此記錄。
●題目以被上傳(改了改說法),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,...