2021-2022年度第三届全国大学生算法设计与编程挑战赛(秋季赛)热身赛 B.这是一道大水题(树状数组)

网友投稿 552 2022-11-17

2021-2022年度第三届全国大学生算法设计与编程挑战赛(秋季赛)热身赛 B.这是一道大水题(树状数组)

2021-2022年度第三届全国大学生算法设计与编程挑战赛(秋季赛)热身赛 B.这是一道大水题(树状数组)

思路:

代码

#includeusing namespace std;typedef long long ll;const int N=1e6+7;ll a[N],c[N];//原数组和树状数组ll n,m;inline ll read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}inline ll lowbit(ll x){ return x&-x;}void add(ll i,ll k){ while(i<=n){ c[i]+=k; i+=lowbit(i); }}ll sum(ll i){//求a[1]到a[n]的和 ll res=0; while(i>0){ res+=c[i]; i-=lowbit(i); } return res;}int main(){ n=read();m=read(); ll ans=0; while(m--){ ll op=read(); if(op==0){ ll l=read(),r=read(),z=read(); ll now=(r-l+1)*z; ans=ans+now; add(l,now);add(r+1,-now); } else{ ll x=read(); printf("%lld\n",ans-sum(x)); } } return 0;}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:2019EC Final E-Flow(贪心 dfs)
下一篇:Spring Security 基于URL的权限判断源码解析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~