(线段树模板)A Simple Problem with Integers --POJ--3468

链接:

http://poj.org/problem?id=3468

 

 

代码:

  1 #include<stdio.h>
  2 #include<algorithm>
  3 #include<stdlib.h>
  4 using namespace std;
  5 
  6 #define Lson r<<1
  7 #define Rson r<<1|1
  8 
  9 const int N = 1e5+5;
 10 
 11 struct SegmentTree
 12 {
 13     int L, R;
 14     long long sum, e;
 15     int Mid()
 16     {
 17         return (L+R)>>1;
 18     }
 19     int len()
 20     {
 21         return R-L+1;
 22     }
 23 }a[N<<2];
 24 
 25 void BuildSegTree(int r, int L, int R)
 26 {
 27     a[r].L=L, a[r].R=R;
 28     a[r].e=0;
 29 
 30     if(L==R)
 31     {
 32         scanf("%lld", &a[r].sum);
 33         return ;
 34     }
 35 
 36     BuildSegTree(Lson, L, a[r].Mid());
 37     BuildSegTree(Rson, a[r].Mid()+1, R);
 38 
 39     a[r].sum = a[Lson].sum + a[Rson].sum;
 40 }
 41 void PushDown(int r)
 42 {
 43     a[Lson].sum += a[r].e*a[Lson].len();
 44     a[Lson].e += a[r].e;
 45     a[Rson].sum += a[r].e*a[Rson].len();
 46     a[Rson].e += a[r].e;
 47 
 48     a[r].e=0;
 49 }
 50 void Update(int r, int L, int R, int e)
 51 {
 52     a[r].sum += (R-L+1)*e;
 53 
 54     if(a[r].L==L && a[r].R==R)
 55     {
 56         a[r].e += e;
 57         return ;
 58     }
 59 
 60     PushDown(r);
 61 
 62     if(R<=a[r].Mid())
 63         Update(Lson, L, R, e);
 64     else if(L>a[r].Mid())
 65        Update(Rson, L, R, e);
 66     else
 67     {
 68         Update(Lson, L, a[r].Mid(), e);
 69         Update(Rson, a[r].Mid()+1, R, e);
 70     }
 71 }
 72 long long Query(int r, int L, int R)
 73 {
 74     if(a[r].L==L && a[r].R==R)
 75        return a[r].sum;
 76 
 77     PushDown(r);
 78 
 79     if(R<=a[r].Mid())
 80         return Query(Lson, L, R);
 81     else if(L > a[r].Mid())
 82         return Query(Rson, L, R);
 83     else
 84     {
 85         long long Lsum = Query(Lson, L, a[r].Mid());
 86         long long Rsum = Query(Rson, a[r].Mid()+1, R);
 87 
 88         return Lsum+Rsum;
 89     }
 90 }
 91 
 92 int main()
 93 {
 94    int n, m;
 95    while(scanf("%d%d", &n, &m)!=EOF)
 96    {
 97        BuildSegTree(1, 1, n);
 98 
 99        while(m--)
100        {
101            char s[10];
102            int L, R, e;
103 
104            scanf("%s", s);
105 
106            if(s[0]=='Q')
107            {
108                scanf("%d%d", &L, &R);
109                printf("%lld\n", Query(1, L, R));
110            }
111            else
112            {
113                scanf("%d%d%d", &L, &R, &e);
114                Update(1, L, R, e);
115            }
116        }
117    }
118    return 0;
119 }

 

转载于:https://www.cnblogs.com/YY56/p/4689786.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399874.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

void和void*

1.概述  许多初学者对C/C语言中的void及void指针类型不甚理解&#xff0c;因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说&#xff0c;并详述void及void指针类型的使用方法与技巧。  2.void的含义  void的字面意思是“无类型”&#xff0c;void *则为…

flask蓝图的使用

flask蓝图的使用 首先&#xff0c;我对蓝图的理解相对通俗&#xff0c;就是觉得蓝图对于视图方法模块化、大项目协同开发过程中的一个很好的工具. 1.下图是我们通常情况下使用的项目组织结构 看一下视图方法: #views.py1 from app import app2 3 4 app.route(/user/index)5 d…

TP5:异常处理封装——3

如果不进过异常封装&#xff0c;如果抛出一异常只会只会上图所示&#xff0c;大部分时候&#xff0c;用户只需要知道Division by zero就够了。 1、首先先建一个类BaseException并继承Exception&#xff0c;这里有三个参数 $code 400; $msg ; $errorCode ;并处理当抛出异常时的…

接口测试(java+testng+ant+jenkins)第三篇ant

1、ant是什么&#xff1f; 是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具 2、下载安装 http://www.cnblogs.com/yuzhongwusan/archive/2013/03/26/2982411.html 3、在eclipce中的使用 准备工作&#xff1a; 项目右键——new——folder——folder name: li…

KVM虚拟机IO处理过程(二) ----QEMU/KVM I/O 处理过程

接着KVM虚拟机IO处理过程中Guest Vm IO处理过程(http://blog.csdn.net/dashulu/article/details/16820281),本篇文章主要描述IO从guest vm跳转到kvm和qemu后的处理过程. 首先回顾一下kvm的启动过程(http://blog.csdn.net/dashulu/article/details/17074675).qemu通过调用kvm提供…

java FileI(O)nputStream为什么比BufferedI(O)utputStream慢?

因为buffered多了一个缓冲区&#xff0c;读和写都是先把硬盘或者内存中的数据放到内存中一块缓存区域&#xff0c;到一定大小读写到硬盘或者内存 package io; import java.io.*; public class FileIOTest { /** * param args * throws FileNotFoundException */…

如何利用echarts图表获取条状图点击名称和值

如何利用echarts图表获取条状图点击名称和值 听语音 |浏览&#xff1a;1505|更新&#xff1a;2017-06-13 10:20|标签&#xff1a;软件 1 2 3 4 5 6 7 分步阅读 echarts图表插件工具&#xff0c;包含了各种不同类型的图形&#xff0c;有圆饼图、折线图、圆环图、柱状图…

TP5: 日志记录改造——4

TP5的日志如果没有特别设置的话&#xff0c;只要出现错误就会记录在日志文件中。这种是没有做必要的&#xff0c;因为这样的话&#xff0c;LOG文件会特别大&#xff0c;而且有好多都是没有用的信息。下面我们对LOG日志进行改造只记录我们需要的信息。 还记得上一章中&#xff…

.NET使用免费开源类库操作Excel

2019独角兽企业重金招聘Python工程师标准>>> 自从上次找到NPOI之后&#xff0c;根据园友提供的线索以及Google&#xff0c;又找到了一些开源免费的类库&#xff0c;所以都简单体验了一遍。 主要找到以下类库&#xff1a; MyXls(http://sourceforge.net/projects/m…

信管网

https://www.cnitpm.com/

php CURL 发送请求详解

cURL可以使用URL的语法模拟浏览器来传输数据&#xff0c;因为它是模拟浏览器&#xff0c;因此它同样支持多种协议&#xff0c;FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP等协议都可以很好的支持&#xff0c;包括一些&#xff1a;HTTPS认证&#xff0c;HTTP…

JMS 消息处理

转载于:https://www.cnblogs.com/luswei/p/7504781.html

设计模式(单例)

单例模式是最简单的设计模式&#xff0c; 意图&#xff1a; 保证一个类仅有一个实例&#xff0c;并提供一个访问它的全局访问点。 适用性&#xff1a; 只能有一个实例而且客户可以从一个众所周知的访问点访问它时。 当这个唯一实例应该是通过子类化可扩展的&#xff0c;并且客户…

牛刀小试、用SharePoint 实现请假管理功能

转&#xff1a;http://www.cr173.com/html/15518_1.html “请假管理”应用&#xff0c;应该算是 SharePoint 的“Hello World&#xff01;”、川菜里面的鱼香肉丝、粤菜里面的蛋炒饭 。。。吧&#xff1f; 怎么样才能做出简易、实用的请假管理&#xff0c;一直都是都是一个问题…

js遍历json对象

原生js遍历json对象 遍历json对象&#xff1a; 无规律&#xff1a; <script> var json [ {dd:SB,AA:东东,re1:123}, {cccc:dd,lk:1qw} ]; for(var i0,ljson.length;i<l;i){ for(var key in json[i]){ alert(key:json[i][key]); } } </script> 有规律&…

JS-封装js让一个div或者img的移动

/* * 运动函数 * 参数&#xff1a; * elem 操作的元素节点 * obj 操作的元素节点上的css属性和css属性值 * attr 操作的元素节点上的css属性 * target 操作的元素节点上的css属性的目标值 * fn 运动结束后的所要执行的函数 */function startMove(elem, obj, fn){ // 开定时器 …

linux如何查看mysql是否启动

linux下有很多服务&#xff0c;今天就写一下如何查看服务是否启动&#xff0c;以mysql为例子 使用命令 # service mysqld status 或者 # service mysql status 命令来查看mysql 的启动状态 如果是 mysqld is stopped 那就说明mysql服务是停止状态&#xff0c; 如果是 mysqld is…

django时区设置问题

2019独角兽企业重金招聘Python工程师标准>>> 最近用Django开发项目&#xff0c;在使用datetime类获取.now()时&#xff0c;获取的时间比实际时间相差8小时左右&#xff08;感觉是UTC时间&#xff09;&#xff0c;服务器使用的时区是“Asia/Shanghai”&#xff08;08…

js文件中声明的一个json对象, 在另一个js文件中可以直接使用。

1. 如在 AAA.js 文件中声明一个json对象。 var world_geo_json {"type":"FeatureCollection","offset":{"x":170,"y":90},"features":[ ] }; 2. 调用。 <html lang"en"> <head> &l…

Objective-C模版方法(TemplateMethod)

什么是模版方法&#xff1f; 官方&#xff1a;定义一个操作中的算法的骨架&#xff0c;而将一些步骤延迟到子类中。模版方法使子类可以重新定义算法的某些步骤而不改变算法的结构。 个人理解&#xff1a;模版方法没必要刻意去理解&#xff0c;平时的编码过程中不知不觉就会用到…