士兵杀敌(四)

时间限制:2000 ms  |  内存限制:65535 KB
难度:5
描述

南将军麾下有百万精兵,现已知共有M个士兵,编号为1~M,总会有一批编号连在一起人请战,最终他们获得相同军功,军师小工的任务就是在南将军询问他某个人的军功的时候,快速的报出此人的军功,请你编写一个程序来帮助小工吧。起始时所有人的军功都是0。

输入
只有一组测试数据。
每一行是两个整数T和M表示共有T条指令,M个士兵。(1<=T,M<=1000000)
随后的T行,每行是一个指令。
指令分为两种:

ADD 100 500 55 表示,第100个人到第500个人请战,最终每人获得了55军功,每次每人获得的军功数不会超过100,不会低于-100。

QUERY 300 表示南将军在询问第300个人的军功是多少。

输出
对于每次查询输出此人的军功,每个查询的输出占一行。
样例输入
4 10
ADD 1 3 10
QUERY 3
ADD 2 6 50
QUERY 3
样例输出
10
60
树状数组,改区间查点居然用sum是我无法理解的无法理解。改点查区间的sum还是可以理解的。

先记录一下,日后便于查看。

#include <stdio.h>
#include <stdlib.h>
int n, C[1000000];
int lowbit(int m) {//得到m二进制最低位的1表示的数 return m&(-m);//如1010,其负数为: 原码->反码0101->补码0111, &得0010
}
void update(int i, int add) {while(i <= n) {C[i] += add;i += lowbit(i);//更新 }
}
int sum(int i) {int s = 0;while(i > 0) {s += C[i];i -= lowbit(i);}return s;
}
int main() {int m, x, i = 0, j;char str[9];scanf("%d%d", &m, &n);//n = 0;while(m--) {scanf("%s%d", str, &i);if(str[0] == 'A') {scanf("%d%d", &j, &x);update(i,x);update(j+1,-x);}else printf("%d\n", sum(i));}return 0;
}

nyoj123士兵杀敌4-树状数组-改区间查点相关推荐

  1. NYOJ 116士兵杀敌(二) 树状数组

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=116 士兵杀敌(一) 数组是固定的,所以可以用一个sum数组来保存每个元素的和就行,但是不 ...

  2. CodeForces 390E Inna and Large Sweet Matrix(树状数组改段求段)

    CodeForces 390E Inna and Large Sweet Matrix(树状数组改段求段) 树状数组仅仅能实现线段树区间改动和区间查询的功能,能够取代不须要lazy tag的线段树.且 ...

  3. 树状数组维护区间和的模型及其拓广的简单总结

    by wyl8899 树状数组的基本知识已经被讲到烂了,我就不多说了,下面直接给出基本操作的代码. 假定原数组为a[1..n],树状数组b[1..n],考虑灵活性的需要,代码使用int *a传数组. ...

  4. 树状数组求区间和模板 区间可修改 参考题目:牛客小白月赛 I 区间

    从前有个东西叫树状数组,它可以轻易实现一些简单的序列操作,比如单点修改,区间求和;区间修改,单点求值等. 但是我们经常需要更高级的操作,比如区间修改区间查询.这时候树状数组就不起作用了,只能选择写一个 ...

  5. 树状数组之区间修改单点查询

    树状数组的区间修改单点查询 树状数组其实本质还单点修改区间查询,但是我们怎么延伸到这个呢,我们建立一个差分数组, 比如:                a[10]={4, 6, 7, 5, 1, 6, ...

  6. HDU-4777 Rabbit Kingdomom(树状数组、区间离线)

    title: HDU-4777 Rabbit Kingdomom(树状数组.区间离线) date: 2018-12-14 11:20:15 tags: [树状数组,离线,区间] categories: ...

  7. 二维树状数组模板(区间修改+区间查询)

    二维树状数组模板(区间修改+区间查询) 例题:JOIOI上帝造题的七分钟 一共两种操作: \(L\ x_1\ y_1\ x_2\ y_2\ d\):把\((x_1,y_1)\),\((x_2,y_2) ...

  8. 【LuoguP3038/[USACO11DEC]牧草种植Grass Planting】树链剖分+树状数组【树状数组的区间修改与区间查询】...

    模拟题,可以用树链剖分+线段树维护. 但是学了一个厉害的..树状数组的区间修改与区间查询.. 分割线里面的是转载的: ----------------------------------------- ...

  9. 树状数组的区间修改+查询

    首先看树状数组是用来求前缀和比较方便的一种数据结构 sum[i] = Sigma a[i] =Sum(bit[x]) 而区间修改也不难实现 就是引入一个差分数组del del[i]表示对i~n的修改 ...

最新文章

  1. python画板颜色_教你在python中用不同的方式画不同颜色的画布
  2. linux下mysql的数据库简单备份脚本
  3. Android之ViewDragHelper
  4. 支付即服务、门店小程序、微信先享卡分别亮相,微信支付持续助力行业数字化升级
  5. 谷歌浏览器如何下载在线音频视频
  6. (亲测可用)基于matlab的用自写函数来实现图像的灰度处理sobel canny算子边缘检测
  7. PHP后台-微信小程序发送订阅消息(详细)
  8. word公式常用快捷键
  9. 7张图告诉你成功者与失败者的行为差别
  10. 给本本K46C升级内存并升级64位WIN7
  11. Oracle第二财季业绩表现抢眼 | 搜狗推出“唇语识别”技术 | FF宣布完成超10亿美元A轮融资
  12. QT中的LIBS用法
  13. java poi操作word模版 导出word文档(附工具类)
  14. easyexcel操作遇到的坑
  15. AMD CPU VMware 16 Pro安装macOS 10.15
  16. 配置使用costmap_2d_node
  17. 基于意图的网络(IBN)
  18. 精馏塔塔板数与c语言编程计算,精馏塔和塔板的主要工艺尺寸的计算
  19. JavaScript中数据类型的转换与undefined及Null
  20. Kotlin 基础学习

热门文章

  1. Linux文件创建时间
  2. Memtest86-7.1内存测试工具
  3. 卜晓军:IBM的大数据战略全面升级
  4. AjaxFileUpload 在C#中应用
  5. 大山深处,有一所希望学校
  6. 一些经常在建站中用到的英文
  7. MARSHALL LIBRARY OPENING HOURS
  8. 奇绩创坛 2021年秋季创业营 反馈:再接再厉
  9. 大量词云出现的时候IO的负担很大
  10. google 用新的tab打开网页