题目链接:problem-1266 快乐的雨季

简单说明:

  模板题——线段树的区间更新(更新,不是替换)、区间查询。没有什么难以理解的。值得注意的是,数据规模最大的情况下每个点会达到1e9这样子,那么区间和不用long long会溢出。还有多组输入,数组要清空。

my code:

 1 #include <algorithm>
 2 #include <iostream>
 3 #include <cstring>
 4 #include <string>
 5 #include <cstdio>
 6 #define lson l,mid,k<<1
 7 #define rson mid+1,r,k<<1|1
 8 #define mset(a,val) memset(a,val,sizeof(a))
 9 using namespace std;
10 typedef long long ll;
11 const int M=1e5+5;
12
13 ll tr[M<<2],lazy[M<<2];
14 int n,m;
15
16 void pup(int k)
17 {
18     tr[k]=tr[k<<1]+tr[k<<1|1];
19 }
20
21 void pdown(int len,int k)
22 {
23
24     lazy[k<<1]+=lazy[k];
25     lazy[k<<1|1]+=lazy[k];
26     tr[k<<1]+=lazy[k]*(len-(len>>1));
27     tr[k<<1|1]+=lazy[k]*(len>>1);
28     lazy[k]=0;
29
30 }
31
32 void build(int l,int r,int k)
33 {
34     if(l==r)
35     {
36         tr[k]=lazy[k]=0;
37         return ;
38     }
39     int mid=(l+r)>>1;
40     build(lson);
41     build(rson);
42     pup(k);
43 }
44
45 void range_add(int L,int R,int addv,int l,int r,int k)
46 {
47     if(L<=l&&r<=R)
48     {
49         lazy[k]+=(ll)addv;
50         tr[k]+=(ll)addv*(r-l+1);
51         return ;
52     }
53     if(lazy[k])
54         pdown(r-l+1,k);
55     int mid=(l+r)>>1;
56     if(L<=mid)
57         range_add(L,R,addv,lson);
58     if(mid<R)
59         range_add(L,R,addv,rson);
60     pup(k);
61 }
62
63 ll range_ask(int L,int R,int l,int r,int k)
64 {
65     if(L<=l&&r<=R)
66         return tr[k];
67     if(lazy[k])
68         pdown(r-l+1,k);
69     ll res=0;
70     int mid=(l+r)>>1;
71     if(L<=mid)
72         res+=range_ask(L,R,lson);
73     if(mid<R)
74         res+=range_ask(L,R,rson);
75     return res;
76 }
77
78 int main()
79 {
80     while(~scanf("%d%d",&n,&m))
81     {
82         mset(tr,0);
83         mset(lazy,0);
84         build(1,n,1);
85         int x,y,val;
86         while(m--)
87         {
88             scanf("%d%d%d",&x,&y,&val);
89             range_add(x,y,val,1,n,1);
90             printf("%lld\n",range_ask(x,y,1,n,1));
91         }
92     }
93     return 0;
94 }

区间更新、查询

转载于:https://www.cnblogs.com/Ycourage/p/9664573.html

NEFU OJ 1266-快乐的雨季-线段树【题解】相关推荐

  1. NEFU 1266 快乐的雨季 (线段树)

    题意: 中文 思路: 线段树基础题当然亦可以分块做 代码: 线段树: #include <bits/stdc++.h> using namespace std; #define ls l, ...

  2. HDU 1556 Color the Ball 线段树 题解

    本题使用线段树自然能够,由于区间的问题. 这里比較难想的就是: 1 最后更新须要查询全部叶子节点的值,故此须要使用O(nlgn)时间效率更新全部点. 2 截取区间不能有半点差错.否则答案错误. 这两点 ...

  3. 【XSY3490】线段树(广义线段树,树上莫队)

    题面 线段树 题解 本题分两 Part 走. Part 1 我们需要解决: 如何在广义线段树上快速区间定位节点. 对于有 nnn 个叶子节点.共 2n−12n-12n−1 个节点的广义线段树 AAA, ...

  4. 蒟蒻君的刷题日记Day12(线段树专题T4):P8082 [COCI2011-2012#4] KEKS 线段树版题解

    解题思路 看题解区的大佬们用的都是单调栈,本蒟蒻献上一篇线段树题解. 整个数最大,首先位数是确定的,则肯定优先考虑高位大小. 大体思路就是从前向后依次求出每一位的值(好像是废话). 对于第 iii 位 ...

  5. [BZOJ4811][Ynoi2017]由乃的OJ 树链剖分+线段树

    4811: [Ynoi2017]由乃的OJ Time Limit: 6 Sec  Memory Limit: 256 MB Submit: 405  Solved: 134 [Submit][Stat ...

  6. BZOJ-4811: [Ynoi2017]由乃的OJ (树链剖分 线段树维护区间操作值 好题)

    4811: [Ynoi2017]由乃的OJ Time Limit: 6 Sec  Memory Limit: 256 MB Submit: 366  Solved: 118 [Submit][Stat ...

  7. NUIST OJ 1350-1352 面朝大海,春暖花开【初识线段树】

    NUIST OJ 1350-1352 面朝大海,春暖花开 NUIST OJ 1350-1352 面朝大海春暖花开 NUIST OJ 1350 面朝大海 春暖花开 基础版 NUIST OJ 1351 面 ...

  8. 线段树(假)练习题一(学校OJ的题)

    Description 桌子上零散地放着若干个盒子,桌子的后方是一堵墙.如右图所示.现在从桌子的前方射来一束平行光, 把盒子的影子投射到了墙上.问影子的总宽度是多少? Sample Input 20 ...

  9. [BZOJ4811][YNOI2017]由乃的OJ(树链剖分+线段树)

    起床困难综合症那题,只要从高往低贪心,每次暴力跑一边看这一位输入0和1分别得到什么结果即可. 放到序列上且带修改,只要对每位维护一个线段树,每个节点分别记录0和1从左往右和从右往左走完这段区间后变成的 ...

最新文章

  1. 自定义msi安装包的执行过程
  2. 构造代码块会想你所想
  3. kubeadm安装K8S单master双节点集群
  4. 计算机二级access模考软件_计算机二级考前通关大礼包来啦!各科目模考软件、视频教程,更有往年真题、最新考纲等打包送!...
  5. 软考复习之路—组成原理
  6. Linux 进程管理数据结构
  7. 零基础科普:4种简单推荐算法背后的原理
  8. 狼真来了!黑客利用SS7漏洞将网银用户洗劫一空
  9. ssh远程访问失败 Centos7
  10. tomcat8+linux+IDEA配置远程代码调试
  11. ASP.NET WEB API简介
  12. EDEM中对几何体(机械设备)表面的精确受力分析
  13. 数字证书如何写入到ukey_ukey身份认证步骤
  14. 如何解决浏览器被网站劫持
  15. mysql in数量限制_SQL语句中in的个数限制为1000
  16. 二阶魔方还原 - 4步2公式
  17. kanzi学习第二天-----创建一个状态机
  18. 赞!华为19级大牛分享503NoSQL进阶笔记,横扫一切
  19. 3682. 宇恒棋 (华师月赛)
  20. SSL: CERTIFICATE_VERIFY_FAILED

热门文章

  1. python学习笔记02-分支循环(图灵学院视频笔记)
  2. 这款必应出品的壁纸软件也太棒了
  3. 企业邮箱的优势有哪些
  4. 【数据分析框架】AARRR模型的数据指标体系AARRR模型AARRR数据指标总结
  5. ſ xf(sinx)dx 中的f(sinx)到底是什么
  6. OpenCV源码剖析之ImageDecoder
  7. 实用的Android ui分析工具
  8. html制作晚安,晚安计划.html
  9. 计算机与测控技术专业就业方向,测控技术与仪器专业就业前景与方向(五篇)
  10. 中e管家投资理财收益最大化技巧