博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
树状数组区间修改,区间查询
阅读量:5081 次
发布时间:2019-06-12

本文共 1506 字,大约阅读时间需要 5 分钟。

1 #include 
2 #include
3 #include
4 #include
5 using namespace std; 6 #define maxn 200010 7 #define lowbit(x) x&(-x) 8 #define LL long long 9 inline int read()10 {11 int s=0,f=1;12 char ch=getchar();13 while(ch<'0'||ch>'9')14 {15 if(ch=='-')16 f=-1;17 ch=getchar();18 }19 while(ch>='0'&&ch<='9')20 s=s*10+ch-'0',ch=getchar();21 return s*f;22 }23 int n,m;24 class fenwick25 {26 LL c1[maxn],c2[maxn];27 int i;28 public:29 inline void update(int x,int w)30 {31 for(i=x;i<=n;i+=lowbit(i))32 {33 c1[i]+=w;34 c2[i]+=x*w;35 }36 }37 inline LL query(int x)38 {39 LL ans=0;40 for(i=x;i>0;i-=lowbit(i))41 ans+=(x+1)*c1[i]-c2[i];42 return ans;43 }44 }T;45 int s[maxn];46 int main()47 {48 int op,l,r,w,i;49 n=read();50 for(i=1;i<=n;i++)51 s[i]=s[i-1]+read();52 m=read();53 for(i=1;i<=m;i++)54 {55 op=read();56 l=read();57 r=read();58 if(op==1)59 {60 w=read();61 T.update(l,w);62 T.update(r+1,-w);63 }64 else65 printf("%lld\n",T.query(r)-T.query(l-1)+s[r]-s[l-1]);66 }67 }
Fenwick

 

转载于:https://www.cnblogs.com/radioteletscope/p/7570801.html

你可能感兴趣的文章
Java表格模型事件示例
查看>>
抽象类与接口
查看>>
如何在SVN服务器上创建项目
查看>>
python3.x Day2 购物车程序练习
查看>>
Sprint 冲刺第三阶段第3-5天 数据库代码
查看>>
LeetCode 438. Find All Anagrams in a String (在字符串中找到所有的变位词)
查看>>
BigDecimal的3个toString方法
查看>>
github ignore 规范
查看>>
lnmp mysql高负载优化
查看>>
How type conversion works
查看>>
JavaScript正则表达式知识点
查看>>
bzoj 2763 [JLOI2011]飞行路线
查看>>
BZOJ2916 [Poi1997]Monochromatic Triangles 数论
查看>>
python实现三级菜单
查看>>
HDU:Integer Inquiry
查看>>
你真的很了解HTML标签吗? 试试这个超异类的HTML标签小测验吧!
查看>>
Javascript MVC架构之旅
查看>>
CollectionView Header And Footer 的使用
查看>>
JVM之深入浅出之垃圾收集算法
查看>>
选择工作 回溯搜索
查看>>