p1438 無聊的數列
老規矩,先看操作
一看第乙個操作,給乙個區間的每個數遞增的增加數,這妥妥要用差分陣列完成啊。
區間修改,單點查詢。
我們直接維護差分陣列。
操作一:
對l加k,對[l-1,r]加d,對r+1減k+(r-l)*d,結束了,記得邊界問題。
操作二:
直接查詢[1,r]的區間和,即為\(a_p\)了。
#includeusing namespace std;
const int n = 1e5 + 10;
typedef long long ll;
struct node
tr[n<<2];
int a[n],b[n];
int n,m;
void pushup(int u)
void build(int u,int l,int r)
; return;
}tr[u] = ;
int mid = l + r >> 1;
build(u<<1,l,mid),build(u<<1|1,mid+1,r);
pushup(u);
}void pushdown(int u)
}void modify(int u,int l,int r,int k)
pushdown(u);
int mid = tr[u].l + tr[u].r >> 1;
if(l<=mid) modify(u<<1,l,r,k);
if(r>mid) modify(u<<1|1,l,r,k);
pushup(u);
}ll query(int u,int l,int r)
int main()
else
}return 0;
}
P1438 無聊的數列
板子題 按照ppt所說的,預留0號位和n 1號位,0號位位於2的若干次方的位置。但是我試了一下。沒有嚴格要求的這樣的寫法,這題也能a,資料有點水。include include include include include include include include include inclu...
P1438 無聊的數列
無聊的yyb總喜歡搞出一些正常人無法搞出的東西。有一天,無聊的yyb想出了一道無聊的題 無聊的數列。k峰 這題不是傻x題嗎 維護乙個數列,支援兩種操作 1 1 l r k d 給出乙個長度等於r l 1的等差數列,首項為k,公差為d,並將它對應加到a l a r 的每乙個數上。即 令a l a l ...
P1438 無聊的數列
無聊的yyb總喜歡搞出一些正常人無法搞出的東西。有一天,無聊的yyb想出了一道無聊的題 無聊的數列。k峰 這題不是傻x題嗎 維護乙個數列,支援兩種操作 1 1 l r k d 給出乙個長度等於r l 1的等差數列,首項為k,公差為d,並將它對應加到a l a r 的每乙個數上。即 令a l a l ...