日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

POJ3468 A Simple Problem with Integers【线段树 成段更新+求和 lazy标志】

發(fā)布時間:2025/3/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ3468 A Simple Problem with Integers【线段树 成段更新+求和 lazy标志】 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

?用longlong替換__int64也成。

#define LL long long

輸入輸出用%lld

Problem: 3468?User: qq1203456195
Memory: 4284K?Time: 1579MS
Language: C?Result: Accepted

?

#include <stdio.h> #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define maxn 111111 #define INT __int64 INT sum[maxn<<2],lazy[maxn<<2]; INT ret; void PullUp(int rt) {sum[rt]=sum[rt<<1]+sum[rt<<1|1]; } void PushDown(int rt,int len) {lazy[rt<<1]+=lazy[rt];lazy[rt<<1|1]+=lazy[rt];sum[rt<<1]+=lazy[rt]*(len-(len>>1));sum[rt<<1|1]+=lazy[rt]*(len>>1);lazy[rt]=0; } void build(int l,int r,int rt) {int m=(r+l)>>1;lazy[rt]=0;if(l==r){scanf("%I64d",&sum[rt]);return;}build(lson);build(rson);PullUp(rt); } void update(INT v,int L,int R,int l,int r,int rt) {int m=(l+r)>>1;if(l>=L&&r<=R){sum[rt]+=(r-l+1)*v;lazy[rt]+=v;return;}if(lazy[rt]!=0) PushDown(rt,r-l+1);if(L<=m) update(v,L,R,lson);if(R>m) update(v,L,R,rson);PullUp(rt); } void query(int L,int R,int l,int r,int rt) {int m=(l+r)>>1;if(l>=L&&r<=R){ret+=sum[rt];return;}if(lazy[rt]!=0) PushDown(rt,r-l+1);if(L<=m) query(L,R,lson);if(R>m) query(L,R,rson); } int main() {int n,q,L,R;INT v;char op[2];while (~scanf("%d%d",&n,&q)){build(1,n,1);while (q--){scanf("%s",op);if(op[0]=='C'){scanf("%d%d%I64d",&L,&R,&v);update(v,L,R,1,n,1);}if(op[0]=='Q'){ret=0;scanf("%d%d",&L,&R);query(L,R,1,n,1);printf("%I64d\n",ret);}}}return 0; }

?

?

?

?

?

?

總結

以上是生活随笔為你收集整理的POJ3468 A Simple Problem with Integers【线段树 成段更新+求和 lazy标志】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。