一个有初值的数列、区间加、区间查

用线段树直接水过

然而并没有1A,主要是做题太快没看规模结果没注意线段树要用longlong建

卧槽怎么可以这么坑爹,害得我看见wa心慌了,还以为连线段树都要跪

一开始在写下传(MDZZ)然后发现没什么操作就删了

 1 #include <cstdio>
 2 #include <iostream>
 3 #define mid (l+r)/2
 4 long long t[400001],tr[400001];
 5 int n,m;
 6 void add(int now,int l,int r,int x,int y)
 7 {
 8     t[now]+=y;
 9     if(l==r)
10         return;
11     if(x<=mid)
12         add(now*2,l,mid,x,y);
13     else
14         add(now*2+1,mid+1,r,x,y);
15 }
16 void plus(int now,int l,int r,int x,int y,int z)
17 {
18     if(l==x && r==y)
19     {
20         tr[now]+=z;
21         return;
22     }
23     if(x<=mid)
24         plus(now*2,l,mid,x,std::min(y,mid),z);
25     if(y>mid)
26         plus(now*2+1,mid+1,r,std::max(x,mid+1),y,z);
27     t[now]=t[now*2]+tr[now*2]*(mid-l+1)+t[now*2+1]+tr[now*2+1]*(r-mid);
28 }
29 long long que(int now,int l,int r,int x,int y)
30 {
31     if(l==x && r==y)
32         return t[now]+tr[now]*(r-l+1);
33     long long sum=(y-x+1)*tr[now];
34     if(x<=mid)
35         sum+=que(now*2,l,mid,x,std::min(y,mid));
36     if(y>mid)
37         sum+=que(now*2+1,mid+1,r,std::max(x,mid+1),y);
38     return sum;
39 }
40 int main()
41 {
42     scanf("%d%d",&n,&m);
43     for(int i=1;i<=n;i++)
44     {
45         int x;
46         scanf("%d",&x);
47         add(1,1,n,i,x);
48     }
49     for(int i=1;i<=m;i++)
50     {
51         char ch=getchar();
52         for(;ch!='C' && ch!='Q';ch=getchar());
53         if(ch=='C')
54         {
55             int x,y,z;
56             scanf("%d%d%d",&x,&y,&z);
57             plus(1,1,n,x,y,z);
58         }
59         else
60         {
61             int x,y;
62             scanf("%d%d",&x,&y);
63             printf("%lld\n",que(1,1,n,x,y));
64         }
65     }
66     return 0;
67 } 

转载于:https://www.cnblogs.com/wanglichao/p/5684426.html

bzoj3212 pku3468 A Simple Problem with Integers相关推荐

  1. 【线段树】【模板】讲解 + 例题1 HDU - 1754 I Hate It (点修改分数)+ 例题二 POJ - 3468 A Simple Problem with Integers(区间加值)

    [线段树][模板]讲解 + 例题1 HDU - 1754 I Hate It (点修改分数)+ 例题二 POJ - 3468 A Simple Problem with Integers(区间加值) ...

  2. poj 3243:A Simple Problem with Integers

    3243:A Simple Problem with Integers 查看 提交 统计 提示 提问 总时间限制:  5000ms  单个测试点时间限制:  2000ms  内存限制:  131072 ...

  3. poj3468 A Simple Problem with Integers

    http://acm.hust.edu.cn:8080/judge/problem/viewProblem.action?id=14607 题意:题目给你n个数,m个操作,接下来一行给你这n个数,接下 ...

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

    链接: http://poj.org/problem?id=3468 代码: 1 #include<stdio.h> 2 #include<algorithm> 3 #incl ...

  5. POJ3468 A Simple Problem with Integers【线段树 成段更新+求和 lazy标志】

    用longlong替换__int64也成. #define LL long long 输入输出用%lld Problem: 3468   User: qq1203456195 Memory: 4284 ...

  6. A Simple Problem with Integers

    http://poj.org/problem?id=3468 http://acm.hdu.edu.cn/showproblem.php?pid=4267 C++版本一 /* *@Author: ST ...

  7. poj 3468 A Simple Problem with Integers(线段树区区)

    题目链接:  http://poj.org/problem?id=3468 题目大意:  给出N个数,和M次查询 C a b c  区间[a,b]的值都加上c Q a b     查询区间[a,b]值 ...

  8. A Simple Problem with Integers POJ - 3468(线段树+区间查询+区间修改+建树+懒惰标记模板)+(树状数组)

    题意: 有一个数组,有两种操作.1: Q a b 求[a,b]的和 2:C a b c 给[a,b] 的所有元素都加上c. 题目: You have N integers, A1, A2, ... , ...

  9. POJ 3468 A Simple Problem with Integers(线段树:区间更新)

    http://poj.org/problem?id=3468 题意: 给出一串数,每次在一个区间内增加c,查询[a,b]时输出a.b之间的总和. 思路: 总结一下懒惰标记的用法吧. 比如要对一个区间范 ...

最新文章

  1. TWaver Flex开发示例及license下载
  2. Android百度地图开发 百度地图得到当前位置
  3. GitHub+Jenkins持续集成简介
  4. 优秀的培训机构该如何培养学生?
  5. python 入门程序_非Python程序员的Python速成课程-如何快速入门
  6. Facebook如何重新设计HHVM JIT编译器的性能
  7. 从持续交付看敏捷开发的自相似性(敏捷开发的心跳)
  8. hashchange
  9. Oracle Statspack分析报告详解(一)
  10. Android第十七课 Jni string空串跨模块使用崩溃注意事项
  11. sas 分析家模块 安装,SAS9.3/9.4统计分析安装使用教程自学资料完整模块最新SID
  12. 利用nssm将jar包安装为windows服务
  13. PX4 VTOL控制逻辑
  14. android地球经纬度平面图,地球经纬度划分图高清 怎么划分经纬度
  15. win7 linux 虚拟机共享文件夹,Win7主机和虚拟机Linux Virtualbox共享文件夹设置教程...
  16. 微信推广二维码接口使用总结
  17. Design Compiler - DC综合的流程(三)
  18. 我屮艸芔茻,mongo居然可以自动删除数据
  19. 微信公众号(服务号/订阅号/小程序)注册详细流程
  20. 小熊开发板STM32工具出现错误Error:an error occured while uploading data from the virtual partition 0xF1

热门文章

  1. python中调用C++写的动态库
  2. [Oracle]使用非滚动游标
  3. [react] 在React中什么时候使用箭头函数更方便呢?
  4. [html] iOS下页面如何启动加载时显示画面图片?如何设置大小?它有什么好处?
  5. [html] 关于<form>标签的enctype属性你有哪些了解?
  6. [vue] 如何实现一个虚拟DOM?说说你的思路
  7. 前端学习(2389):项目初始化总结
  8. 前端学习(2013)vue之电商管理系统电商系统之监听on-success事件
  9. 前端学习(1670):前端系列实战课程之核心运动原理
  10. java面试题27 java中下面哪些是Object类的方法()