博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【模板】 线段树
阅读量:6630 次
发布时间:2019-06-25

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

线段树入门版qwq

区间查询  区间修改(都是加法qaq)

1 #include
2 #include
3 #define sz 100010 4 #define LL long long 5 using namespace std; 6 int n, m, x, y, pd, add = 0; 7 LL ans = 0; 8 struct seg { 9 LL l, r, w, f;10 }tree[sz<<2];11 void build(int k, int left, int right) {12 tree[k].l = left, tree[k].r = right;13 if(left == right) {14 scanf("%d",&tree[k].w);15 return;16 }17 int mid = (tree[k].l + tree[k].r)>>1;18 build(k<<1, left, mid), build(k<<1|1, mid+1, right);19 tree[k].w = tree[k<<1].w + tree[k<<1|1].w;20 }21 int down(int k) {22 tree[k<<1].f += tree[k].f;23 tree[k<<1|1].f += tree[k].f;24 tree[k<<1].w += tree[k].f*(tree[k<<1].r-tree[k<<1].l+1);25 tree[k<<1|1].w += tree[k].f*(tree[k<<1|1].r-tree[k<<1|1].l+1);26 // tree[k].w = tree[k<<1].w + tree[k<<1|1].w; emm27 tree[k].f = 0;28 }29 void change(int k) {30 if(x <= tree[k].l && y >= tree[k].r) {31 tree[k].w += add*(tree[k].r-tree[k].l+1);32 tree[k].f += add;33 return;//emm34 }35 if(tree[k].f) down(k);36 int mid = (tree[k].l+tree[k].r)>>1;37 if(x <= mid) change(k<<1);38 if(y > mid) change(k<<1|1);39 tree[k].w = tree[k<<1].w + tree[k<<1|1].w;40 }41 void ask_sum(int k) {42 if(x <= tree[k].l && y >= tree[k].r) {43 ans += tree[k].w;44 return;45 }46 if(tree[k].f) down(k);47 int mid = (tree[k].l+tree[k].r)>>1;48 if(x <= mid) ask_sum(k<<1);49 if(y > mid) ask_sum(k<<1|1);50 }51 int main() {52 scanf("%d%d",&n,&m);53 build(1,1,n);54 for(int i = 1; i <= m; i++) {55 scanf("%d%d%d",&pd,&x,&y);56 if(pd == 1) {57 scanf("%d",&add);58 change(1);59 }60 else {61 ans = 0;62 ask_sum(1);63 printf("%lld\n",ans);64 }65 }66 }

转载于:https://www.cnblogs.com/Hwjia/p/9521719.html

你可能感兴趣的文章
中国大数据科技传播联盟在京成立
查看>>
xargs 命令
查看>>
awk——报告生成器
查看>>
oracle 体系结构
查看>>
Nginx+Keepalived搭建高可用负载均衡集群
查看>>
VS2015 正式版中为什么没有了函数前面引用提示了?
查看>>
windows 系统的安装和虚拟机共享文件夹
查看>>
arp协议的混乱引发的思考--一个实例
查看>>
Why Public Cloud is Not a Security Concern
查看>>
配置XenDesktop一例报错-序列不包含任何元素
查看>>
javascript理解数组和数字排序
查看>>
微软同步框架入门之五--使用WCF同步远程数据
查看>>
Last-Modified、If-Modified-Since 实现缓存和 OutputCache 的区别
查看>>
理解SQL代理错误日志
查看>>
Multipart Internet Mail Extensions (MIME)
查看>>
C# WinForm控件之Dock顺序调整
查看>>
中控科技 ZK Software的售后服务真像一坨屎,技术人员嚣张
查看>>
NSPredicate过滤数组数据
查看>>
设置MYSQL允许用IP访问
查看>>
spark 数据预处理 特征标准化 归一化模块
查看>>