水平有限,前缀和的前缀和什么的,rbq

两个操作:

1.区间l到r加上一个数x

2.查询区间[l,r]的区间和

#include<iostream>
#include<cstdio>
using namespace std;
int n,m,d,x,pt,ptl,ptr;//pt,ptl,ptr我也不知道应该叫什么,类似标记?
long long tree[100000*4+2],pls[100000*4+2],ans;//pls为累加标记
inline void add(int l,int r)
{
l=l+d,r=r+d;
pt=0;
pls[l]+=x,tree[l]+=x;
if(l!=r)
{
pls[r]+=x,tree[r]+=(x<<pt);
while((l^1)!=r)
{
if(!(l&1))
pls[l^1]+=x,tree[l^1]+=(x<<pt);
if(r&1)
pls[r^1]+=x,tree[r^1]+=(x<<pt);
pt++;
l=l>>1,r=r>>1,tree[l]=tree[l<<1]+tree[l<<1|1]+(pls[l]<<pt),tree[r]=tree[r<<1]+tree[r<<1|1]+(pls[r]<<pt);
}
}
while(l>>=1)
{
pt++;
tree[l]=tree[l<<1]+tree[l<<1|1]+(pls[l]<<pt);
}
}
long long getans(int l,int r)
{
l=l+d,r=r+d;
ans=tree[l];
ptl=pt=1;
if(l!=r)
{
ans+=tree[r],ptr=1;
while((l^1)!=r)
{
if(!(l&1))
ans+=tree[l^1],ptl=ptl+pt;
if(r&1)
ans+=tree[r^1],ptr=ptr+pt;
pt=pt<<1;
l=l>>1;
r=r>>1;
ans=ans+pls[l]*ptl+pls[r]*ptr;
}
ptl+=ptr;
}
while(l>>=1)
ans+=pls[l]*ptl;
return ans;
}
int main()
{
scanf("%d%d",&n,&m);
d=1;
while(d<n)
d<<=1;
d--;
for(int i=1;i<=n;i++)
scanf("%lld",&tree[d+i]);
for(int i=(n+d)>>1;i;i--)
tree[i]=tree[i<<1]+tree[i<<1|1];
int t,l,r;
while(m--)
{
scanf("%d%d%d",&t,&l,&r);
if(t==1)
{
scanf("%d",&x);
add(l,r);
}
else
printf("%lld\n",getans(l,r));
}
return 0;
}

zkw模板的更多相关文章

  1. BZOJ-1834 网络扩容 最小费用最大流+最大流+乱搞

    1834: [ZJOI2010]network 网络扩容 Time Limit: 3 Sec Memory Limit: 64 MB Submit: 2269 Solved: 1136 [Submit ...

  2. poj3468 A Simple Problem with Integers(zkw区间修改模板)

    此题是一道线段树的裸题,这里只是为了保存我的zkw线段树模板 #include <cstdio> #include <cstring> #include <iostrea ...

  3. zkw线段树模板题

    学了zkw线段树,觉得没什么必要刷专题的吧(切不动啊).. 那先放一个模板题吧(我绝不会和你说搬了一道树状数组模板题的!!!) 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某一个数加 ...

  4. 最小费用流模板(zkw与spfa)

    "zkw" 费用流算法在哪些图上慢(摘自https://www.cnblogs.com/ECJTUACM-873284962/p/7744943.html) 实践中, 上面的这个算 ...

  5. [模板] 网络流相关/最大流ISAP/费用流zkw

    最大流/ISAP 话说ISAP是真快...(大多数情况)吊打dinic,而且还好写... 大概思路就是: 在dinic的基础上, 动态修改层数, 如果终点层数 \(>\) 点数, break. ...

  6. 洛谷.3381.[模板]最小费用最大流(zkw)

    题目链接 Update:我好像刚知道多路增广就是zkw费用流.. //1314ms 2.66MB 本题优化明显 #include <queue> #include <cstdio&g ...

  7. zkw费用流模板

    理论:http://www.cnblogs.com/acha/p/6735037.html #include<cstdio> #include<cstring> #includ ...

  8. [模板]非递归线段树(zkw的变异版本)

    类似于zkw,但空间只用两倍,zkw要4倍. 链接 可以下传标记,打熟后很好码. #include <set> #include <cmath> #include <cs ...

  9. [模板] zkw线段树

    zkw线段树 code1简单版本 code2差分版本(暂无) code1:(有注释) //By Menteur_Hxy #include<cstdio> #include<iostr ...

随机推荐

  1. 机器学习之三:logistic回归(最优化)

    一般来说,回归不用在分类问题上,因为回归是连续型模型,而且受噪声影响比较大.如果非要应用进入,可以使用logistic回归. logistic回归本质上是线性回归,只是在特征到结果的映射中加入了一层函 ...

  2. 总结:PyQt5自定义信号源

    定义一个信号源有4个方面要注意: 1.定义信号源 A = pyqtSignal([str], [int,str]) 这里特别使用信号源重载的情况加以说明.如上就是信号源A的重载,一个可以发送str参数 ...

  3. 暑假练习赛 003 B Chris and Road

    B - Chris and Road Crawling in process... Crawling failed Time Limit:2000MS     Memory Limit:262144K ...

  4. 【翻译】.Net Core的意义

    想要了解.Net Core的意义,就必须要了解拥有很长历史的.Net Framework,.Net Framework1.0于2002年发布.从那开始,每隔两年就会有一个主版本推出.伴随着Visual ...

  5. Apache降权和禁用PHP危险函数

    测试环境: Windows Server 2003 + phpstudy 首先在win2003里运行phpstudy,这里注意需要选择应用系统服务模式,应用之后重启phpstudy. 打开系统服务(开 ...

  6. EF分页

    先来看看几个LINQ to SQL的几个函数. Take 说明:获取集合的前n个元素:延迟.即只返回限定数量的结果集. var q = (  from e in db.Employees  order ...

  7. [转载] Java安全体系简介

    转载自http://blog.csdn.net/jbossweek/article/details/1458468 一.设计原则 独立性 安全服务独立于具体的应用,应用不需要单独实现,只需通过请求就可 ...

  8. Python之matplotlib模块安装

    numpy 1.下载安装 源代码 http://sourceforge.net/projects/numpy/files/NumPy/ 安装 python2.7 setup.py install 2. ...

  9. 【转】Entity Framework 5.0系列之自动生成Code First代码

    在前面的文章中我们提到Entity Framework的“Code First”模式也同样可以基于现有数据库进行开发.今天就让我们一起看一下使用Entity Framework Power Tools ...

  10. 如何用webgl(three.js)搭建一个3D库房-第一课

    今天我们来讨论一下如何使用当前流行的WebGL技术搭建一个库房并且实现实时有效交互 第一步.搭建一个3D库房首先你得知道库房长啥样,我们先来瞅瞅库房长啥样(这是我在网上找的一个库房图片,百度了“库房” ...