求救,用树状数组被TLE了三个点

P3368 【模板】树状数组 2

@[wenza03](/space/show?uid=29669) 你这样写一次操作就是O(n)的,不T才怪。
by Smile_Cindy @ 2019-02-22 19:46:19


你这是在假吧?
by 142857cs @ 2019-02-22 19:46:44


你用树状数组了吗? lowbit都没调用一下
by liuyifan @ 2019-02-22 19:47:26


@[wenza03](/space/show?uid=29669) ```cpp #include <bits/stdc++.h> #define lowbit(i) (i&-i) using namespace std; const int MAX_N=500005; int A[MAX_N]; int bit[MAX_N]; int n,m; void modify(int i,int x) { while(i<=n) { bit[i]+=x; i+=lowbit(i); } } int query(int i) { int res=0; while(i>0) { res+=bit[i]; i-=lowbit(i); } return res; } int main() { cin>>n>>m; for(int i=1;i<=n;i++)cin>>A[i]; for(int i=1;i<=n;i++)modify(i,A[i]),modify(i+1,-A[i]); while(m--) { int opt; cin>>opt; if(opt==1) { int l,r,x; cin>>l>>r>>x; modify(l,x); modify(r+1,-x); } else { int i; cin>>i; cout<<query(i)<<endl; } } return 0; } ```
by Smile_Cindy @ 2019-02-22 19:49:23


楼主这是差分吧...
by AC_Automation @ 2019-02-22 19:50:48


噢,谢谢楼上大佬
by wenza03 @ 2019-02-22 19:53:55


@[Alpha](/space/show?uid=87058) 谢谢
by wenza03 @ 2019-02-22 19:54:35


@[wenza03](/space/show?uid=29669) cin、cout的速度很慢,特别是在几十万数据的时候,可以用scanf、printf,或~~玄学~~快读等
by wisdom_grass @ 2019-02-22 20:06:44


@[智慧草](/space/show?uid=23842) 谢谢大佬qwq
by wenza03 @ 2019-02-22 20:08:08


@[wenza03](/space/show?uid=29669) 我是蒟蒻呀 ~~还有我没看懂您的算法,我好菜~~
by wisdom_grass @ 2019-02-22 20:11:07


| 下一页