富庶的建业城中,有一条格格不入的长街,名曰跳蚤街,被战争所致的孤儿,聚集于此。全国的经济都在为战争服务之时,也无人顾得了这里了。

除了两位夫人。

大乔小乔每天都会带着一些食物来到跳蚤街,分给某一位孩子。为了避免分配不均,她们时常会询问一个区域内食物的总量,然后进行调整以保证每个孩子都有足够的食物。

Input

第一行两个整数n,m,表示跳蚤街住着n户孩子,大乔小乔一共分发或询问了m次。

第二行n个整数,第i个数ai表示第i户孩子已有ai的食物。

接下来m行,每行开始先读入一个整数si,指明这是一次询问还是一次分发。

si=0,表明这是一次询问,然后读入两个整数li,ri,表示询问[li,ri]区间中的孩子们一共有多少食物。

si=1,表明这是一次分发,然后读入两个整数xi,wi,表示对第xi户孩子分发了wi的食物。

1≤n,m≤100000,0≤ai≤100000,1≤xi≤n,0≤wi≤10000,1≤li≤ri≤n

Output

有多少询问就输出多少行,每行输出一个整数,作为对该询问的回答。

Sample input and output

Sample Input Sample Output
5 4
1 2 3 4 5
1 2 3
0 2 4
1 4 1
0 1 5
12
19

纯裸的线段树,没什么好说的。。关于线段树大家可以百度一下或者google一下,会有很多文章有介绍。

我这段程序是按jianshu(建树),suan(给线段树赋初值,即一开始的i孩子有ai食物),found(数的区间查找)|done(树的维护)的顺序写的。

#include <iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int q[100005],shu[400005][3];
void jianshu(int g,int h,int l)
{shu[l][1]=g;shu[l][2]=h;if (g==h) {shu[l][0]=q[g];return;}jianshu(g,(g+h)/2,l*2);jianshu((g+h)/2+1,h,l*2+1);
}
int suan(int j)
{if (shu[j][1]==shu[j][2]) return shu[j][0];return shu[j][0]=suan(j*2)+suan(j*2+1);
}
int found(int l,int g,int h)
{if (g==shu[l][1] && h==shu[l][2]) return shu[l][0];int z=(shu[l][1]+shu[l][2])/2;if (g<=z && h>=z+1) return found(l*2,g,z)+found(l*2+1,z+1,h);if (h<=z) return found(l*2,g,h);else return found(l*2+1,g,h);
}
void done(int l,int g,int h)
{shu[l][0]+=h;if (shu[l][1]==shu[l][2]) return;if (g<=(shu[l][1]+shu[l][2])/2) done(l*2,g,h);else done(l*2+1,g,h);
}
int main()
{int n,m,j,l,g,h;cin>>n>>m;memset(q,123,sizeof(q));memset(shu,0,sizeof(shu));for (j=1;j<=n;j++) scanf("%d",&q[j]);jianshu(1,n,1);suan(1);for (j=1;j<=m;j++){scanf("%d%d%d",&l,&g,&h);if (l==0) printf("%d\n",found(1,g,h));if (l==1) done(1,g,h);}return 0;
}

转载于:https://www.cnblogs.com/Atlantis67/p/3675430.html

2014 UESTC Training for Data Structures B - 母仪天下相关推荐

  1. 2014 UESTC Training for Data Structures D - 长使英雄泪满襟

    以下内容来自ShallWe's blog 题目 2014 UESTC Training for Data Structures D - 长使英雄泪满襟 看出司马懿在等蜀军粮草不济,孔明于是下令分兵屯田 ...

  2. 2016 UESTC Training for Data Structures J - 郭大侠与Rabi-Ribi 优先队列

    J - 郭大侠与Rabi-Ribi Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others ...

  3. 2016 UESTC Training for Data Structures O - 卿学姐种美丽的花 树状数组+等差数列

    O - 卿学姐种美丽的花 Time Limit: 8000/4000MS (Java/Others)     Memory Limit: 125535/65535KB (Java/Others) Su ...

  4. 2018 UESTC Training for Data Structures 小埋的steam愿望单

    小埋的steam愿望单 解题思路:set与map 这四个操作使用set<pair<int,string> >就可以完成,不过注意删除和修改时需要知道游戏的价格,所以用map&l ...

  5. 2018 UESTC Training for Data Structures

    Link A - 一棵简单的线段树 标准线段树 #include<bits/stdc++.h> #define ll long long using namespace std;const ...

  6. 2016 UESTC Training for Data Structures J - 郭大侠与Rabi-Ribi CDOJ 1334 优先队列

    J - 郭大侠与Rabi-Ribi 就是有N只兔子,每只兔子会存在a[i]秒,价值为v[i],然后每秒只能取一只兔子,问能取的兔子总价值的最大值是多少 用一个堆/优先队列维护就好了 首先我们先把兔子按 ...

  7. 2016 UESTC Training for Data Structures K - 郭大侠与甲铁城 CDOJ 1342 离线树状数组

    K - 郭大侠与甲铁城 有一个区间,长度1e5,每个点有一种颜色,颜色属于[1,1000],离线询问某个区间的颜色种树,询问次数也少1e5 我的做法是离线树状数组 首先把区间保存下来,按右端点升序排序 ...

  8. 2016 UESTC Training for Data Structures F - 郭大侠与“有何贵干?” CDOJ 1335 线段树 扫描线 离散化

    F - 郭大侠与"有何贵干?" 就是给一个三维空间,和N个长方体,问覆盖K次的体积 x和y都是1e9,但是z是[1,3],所以可以把这个分为两个二维平面,求被覆盖K次的面积,最后加 ...

  9. UESTC_秋实大哥与快餐店 2015 UESTC Training for Data StructuresProblem C

    C - 秋实大哥与快餐店 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Sub ...

最新文章

  1. qt 定义一个长度的数组,Qt - 声明一个QLabel数组并将其添加到QTabWidget的选项卡
  2. Python 算法模板库,Pythonista 找工作利器
  3. 怎样让友情链接更加有效果
  4. 牛客练习赛44 C 小y的质数 (数论,容斥定理)
  5. XunSearch的安装和加入服务器开机脚本以及将目录写入系统变量
  6. minio 并发数_c#(asp.net)线程配置总结
  7. Tampermonkey笔记-脚本的搭建和基本使用
  8. 他人收藏的精彩视频(一)
  9. 源码安装redis-3.2.11
  10. Java技术学习路线图
  11. Ivy Bridge处理器
  12. 如何使用ProSave软件对触摸屏进行OS 更新?
  13. [nssl 1322][jzoj cz 2109] 清兵线 {dp}
  14. 记住密码的实现的2个方案
  15. 基于新浪微博API生成短链接的15款在线工具
  16. mysql的填充因子_数据库的索引和填充因子fillfactor
  17. .reg文件添加、修改、删除注册表的方法
  18. 编辑器vi使用方法详细介绍
  19. 竞品商业情报收集和竞品商业情报分析该怎么做?
  20. 银河麒麟V10 sp1服务器安装英伟达显卡驱动

热门文章

  1. 100c之31:哥德巴赫猜想
  2. 理解JVM如何使用Windows和Linux上的本机内存
  3. when will ifm open?
  4. If you study Math, Physics and Chemistry well, you will be the strongest of the world and the truth
  5. 神经网络第五周tutorial解析
  6. C++数组与指针回顾总结
  7. ios程序内发送邮件的代码
  8. 8月3日云栖精选夜读 | 阿里巴巴宣布 Sentinel 开源,进一步完善 Dubbo 生态(附PPT和视频)...
  9. MyCat 入门指南
  10. Grafana+Prometheus系统监控之webhook