qn姐姐最好了~
qn姐姐給你了乙個長度為n的序列還有m次操作讓你玩,
1 l r 詢問區間[l,r]內的元素和
2 l r 詢問區間[l,r]內的元素的平方和
3 l r x 將區間[l,r]內的每乙個元素都乘上x
4 l r x 將區間[l,r]內的每乙個元素都加上x
第一行兩個數n,m接下來一行n個數表示初始序列
就下來m行每行第乙個數為操作方法opt,
若opt=1或者opt=2,則之後跟著兩個數為l,r
若opt=3或者opt=4,則之後跟著三個數為l,r,x
操作意思為題目描述裡說的
對於每乙個操作1,2,輸出一行表示答案示例1
複製
5 61 2 3 4 5
1 1 5
2 1 5
3 1 2 1
4 1 3 2
1 1 4
2 2 3
複製
155516
41
對於100%的資料 n=10000,m=200000 (注意是等於號)保證所有詢問的答案在long long 範圍內
這個比較簡單,但是出現了乙個很難找的bug。
#include #include#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f
using
namespace
std;
typedef
long
long
ll;const
int maxn = 2e5 + 1000
;ll a[maxn];
struct
node
tree[maxn*4
];void push_up(int
id)void push_down(int
id)
if(tree[id].lazyadd)
}void build(int id,int l,int
r)
int mid = (l + r) >> 1
; build(id
<< 1
, l, mid);
build(id
<< 1 | 1, mid + 1
, r);
push_up(id);
}void updatec(int id,int l,int r,int
x)
int mid = (tree[id].l + tree[id].r) >> 1
;
if (l <= mid) updatec(id << 1
, l, r, x);
if (r > mid) updatec(id << 1 | 1
, l, r, x);
push_up(id);
}void updateadd(int id,int l,int r,int
x)
int mid = (tree[id].l + tree[id].r) >> 1
;
if (l <= mid) updateadd(id << 1
, l, r, x);
if (r > mid) updateadd(id << 1 | 1, l, r, x);//
這裡的id<<1|1忘記+1了,就寫成了id<<1
push_up(id);
}ll querysum(
int id,int l,int
r) ll ans = 0
; push_down(id);
int mid = (tree[id].l + tree[id].r) >> 1
;
if (l <= mid) ans += querysum(id << 1
, l, r);
if (r > mid) ans += querysum(id << 1 | 1
, l, r);
return
ans;
}ll queryc(
int id,int l,int
r) push_down(id);
ll ans = 0
;
int mid = (tree[id].l + tree[id].r) >> 1
;
if (l <= mid) ans += queryc(id << 1
, l, r);
if (r > mid) ans += queryc(id << 1 | 1
, l, r);
return
ans;
}int
main()
if(opt==2
)
if(opt==3
)
if(opt==4
)
}return0;
}
資料結構 線段樹 牛客練習賽28B
op 1 sum op 2 sum2 平方和 op 3 mul op 4 add 2個lazy標記 include include using namespace std define lc rt 1 define rc rt 1 1 define mid l r 2 typedef long lo...
牛客練習賽28 B 資料結構
題目描述 qn姐姐最好了 qn姐姐給你了乙個長度為n的序列還有m次操作讓你玩,1 l r 詢問區間 l,r 內的元素和 2 l r 詢問區間 l,r 內的元素的平方和 3 l r x 將區間 l,r 內的每乙個元素都乘上x 4 l r x 將區間 l,r 內的每乙個元素都加上x 第一行兩個數n,m ...
牛客練習賽 資料結構 線段樹
qn姐姐最好了 qn姐姐給你了乙個長度為n的序列還有m次操作讓你玩,1 l r 詢問區間 l,r 內的元素和 2 l r 詢問區間 l,r 內的元素的平方和 3 l r x 將區間 l,r 內的每乙個元素都乘上x 4 l r x 將區間 l,r 內的每乙個元素都加上x 第一行兩個數n,m 接下來一行...