打一次错一次qvq

#include<cstdio>
#include<algorithm>
#define int long long
using namespace std;inline void input(int &x){int ans=0,f=1;char c=getchar();while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){ans=ans*10+c-48;c=getchar();}x=ans*f;
}inline void output(int x){if(x<0)x=-x,putchar('-');if(x>9)output(x/10);putchar(x%10+48);
}inline void writeln(int x){output(x);putchar('\n');
}int n,m,a[100005],c[400005],addsum[400005];inline void build(int k,int l,int r){if(l==r){c[k]=a[l];return;}int mid=(l+r)>>1;build(k<<1,l,mid);build(k<<1|1,mid+1,r);c[k]=c[k<<1]+c[k<<1|1];
}inline void fix(int k,int l,int r,int xl,int xr,int x){if(xl<=l&&r<=xr){//顺序 addsum[k]+=x;return;}int mid=(l+r)>>1;if(xl<=mid)fix(k<<1,l,mid,xl,xr,x);if(xr>=mid+1)fix(k<<1|1,mid+1,r,xl,xr,x);c[k]+=(min(xr,r)-max(xl,l)+1)*x;//+1
}inline int query(int k,int l,int r,int xl,int xr){if(xl<=l&&r<=xr){return c[k]+(min(xr,r)-max(xl,l)+1)*addsum[k];}int mid=(l+r)>>1,ans=(min(xr,r)-max(xl,l)+1)*addsum[k];if(xl<=mid)ans+=query(k<<1,l,mid,xl,xr);if(xr>=mid+1)ans+=query(k<<1|1,mid+1,r,xl,xr);return ans;
}signed main(){input(n);input(m);for(int i=1;i<=n;i++)input(a[i]);build(1,1,n);for(int i=1;i<=m;i++){int opt,x,y,k;input(opt);if(opt==1){input(x);input(y);input(k);fix(1,1,n,x,y,k);}else{input(x);input(y);\writeln(query(1,1,n,x,y));}}
} 

转载于:https://www.cnblogs.com/Y15BeTa/p/11400178.html

线段树区改区查标记永久化板子相关推荐

  1. 线段树(区间更改,区间查最值)模板

    线段树(区间更改,区间查最值)模板 主要重在理解线段树,理解了怎么改都可以,还有以后不要直接抄模板,要写出自己想的一份代码 &代码: #include <cstdio> #incl ...

  2. poj 2352 Stars 线段树(先建后查/边建边查)/树状数组三种方法思路详解,带你深入了解线段树难度⭐⭐⭐★

    poj 2352 Stars 目录 poj 2352 Stars 1.树状数组 2.线段树,先建树后查找 3.线段树,边建树边查找 Description Astronomers often exam ...

  3. CF938G Shortest Path Queries(线性基,线段树分治,并查集)

    CF938G Shortest Path Queries Solution 套路题. xorxorxor最短路可以用线性基维护(把每个环的边权异或和放进线性基,询问时把树边路径边权异或和放在线性基里跑 ...

  4. P5787 二分图 /【模板】线段树分治(线段树分治、并查集)

    关于什么是合理的实现 解析 本题把并查集写在了题面上 然而,我却一直沉浸在一个及其通用的判断二分图的方法中: 一个图是二分图的充要条件是它没有奇环 怎么维护这个玩意?带权并查集! 怎么套线段树分治?可 ...

  5. nyoj 1217 GLaDOS的耳机(线段树,开两个标记数组维护)

    1217-GLaDOS的耳机 内存限制:64MB时间限制:3000msSpecial Judge: No accepted:8submit:40 题目描述: GLaDOS是个耳机控.对于他来说,已经不 ...

  6. HDU 5575 Discover Water Tank(线段树+自底向上dp+并查集)

    题意 给定n个挡板和m次回答,每次回答为x号水池的H+0.5高度是否有水,问这些回答互不矛盾的最大集合. 题解 设定状态dp[i][0-1]代表第i个区间枚举到当前回答后有水的最大不矛盾集合和没水的最 ...

  7. BZOJ 2733 线段树的合并 并查集

    思路: 1.线段树合并(nlogn的) 2.splay+启发式合并 线段树合并比较好写 我手懒 //By SiriusRen #include <cstdio> #include < ...

  8. HDUOJ---1754 I Hate It (线段树之单点更新查区间最大值)

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  9. 【李超树】李超线段树维护凸包(凸壳) (例题:blue mary开公司+线段游戏+ZZH的旅行)

    文章目录 前言 李超树 引入(斜率优化) 什么是李超树? 李超树活着能干点什么? 算法思想(使用手册?) 插入 查询 模板 判断是否覆盖(优不优) 插入 查询 例题 板题:BlueMary开公司 分析 ...

最新文章

  1. 面试官:给我一个避免消息重复消费的解决方案?
  2. Jupyter 官方神器:可视化 Debug 工具!
  3. ajax得到后端数据一直提示为[object Object]解决方法
  4. java程序设计颜志军_JSP 自定义标签之一 简单实例
  5. GIT 中同时 push 代码到多个远程仓库
  6. response.sendRedirect使用注意事项 .
  7. Cortex-M3 动态加载一(地址无关代码实现)
  8. android动画超出圆角,Android关于Glide的使用(高斯模糊、加载监听、圆角图片)
  9. wxhtmltopdf 图片路径问题_图片引入路径问题
  10. paip.PHP代码生成器比较
  11. python中的is和==
  12. 简述计算机键盘上shift键的作用,电脑Shift键作用大全
  13. 012:tkinter+爬虫设计对联软件
  14. 数论基本定理和欧拉广义降幂公式
  15. mysql group by作用_group by实现原理及其作用
  16. macOS 内核之 OS X 系统的起源
  17. 一文读懂 非root用户正确编译安装 protobuf —— 附 CMakeLists.txt 配置
  18. Milvus 2.0 Knowhere 概览
  19. 【原创:毕业意味着什么】
  20. CCNU ACM 2016夏季集训·最长递增子序列(LIS)

热门文章

  1. Redis mysql查询结果_Redis Select 命令
  2. 温故而知新 js 的错误处理机制
  3. 浅谈iOS中的蓝牙技术(一) GameKit framework
  4. 防火墙迁移:提高安全弹性与可用性的5种方
  5. 5G:关键技术实现可引领
  6. 第二次裸辞_潜伏期_一些感想
  7. xgboost: 速度快效果好的boosting模型
  8. 华为4X和4C无法使用电信4G的解决办法
  9. jquery源码解析:proxy,access,swap,isArraylike详解
  10. log4j的相关jar包总结