nyoj123士兵杀敌4-树状数组-改区间查点
士兵杀敌(四)
- 描述
-
南将军麾下有百万精兵,现已知共有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-树状数组-改区间查点相关推荐
- NYOJ 116士兵杀敌(二) 树状数组
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=116 士兵杀敌(一) 数组是固定的,所以可以用一个sum数组来保存每个元素的和就行,但是不 ...
- CodeForces 390E Inna and Large Sweet Matrix(树状数组改段求段)
CodeForces 390E Inna and Large Sweet Matrix(树状数组改段求段) 树状数组仅仅能实现线段树区间改动和区间查询的功能,能够取代不须要lazy tag的线段树.且 ...
- 树状数组维护区间和的模型及其拓广的简单总结
by wyl8899 树状数组的基本知识已经被讲到烂了,我就不多说了,下面直接给出基本操作的代码. 假定原数组为a[1..n],树状数组b[1..n],考虑灵活性的需要,代码使用int *a传数组. ...
- 树状数组求区间和模板 区间可修改 参考题目:牛客小白月赛 I 区间
从前有个东西叫树状数组,它可以轻易实现一些简单的序列操作,比如单点修改,区间求和;区间修改,单点求值等. 但是我们经常需要更高级的操作,比如区间修改区间查询.这时候树状数组就不起作用了,只能选择写一个 ...
- 树状数组之区间修改单点查询
树状数组的区间修改单点查询 树状数组其实本质还单点修改区间查询,但是我们怎么延伸到这个呢,我们建立一个差分数组, 比如: a[10]={4, 6, 7, 5, 1, 6, ...
- HDU-4777 Rabbit Kingdomom(树状数组、区间离线)
title: HDU-4777 Rabbit Kingdomom(树状数组.区间离线) date: 2018-12-14 11:20:15 tags: [树状数组,离线,区间] categories: ...
- 二维树状数组模板(区间修改+区间查询)
二维树状数组模板(区间修改+区间查询) 例题:JOIOI上帝造题的七分钟 一共两种操作: \(L\ x_1\ y_1\ x_2\ y_2\ d\):把\((x_1,y_1)\),\((x_2,y_2) ...
- 【LuoguP3038/[USACO11DEC]牧草种植Grass Planting】树链剖分+树状数组【树状数组的区间修改与区间查询】...
模拟题,可以用树链剖分+线段树维护. 但是学了一个厉害的..树状数组的区间修改与区间查询.. 分割线里面的是转载的: ----------------------------------------- ...
- 树状数组的区间修改+查询
首先看树状数组是用来求前缀和比较方便的一种数据结构 sum[i] = Sigma a[i] =Sum(bit[x]) 而区间修改也不难实现 就是引入一个差分数组del del[i]表示对i~n的修改 ...
最新文章
- python画板颜色_教你在python中用不同的方式画不同颜色的画布
- linux下mysql的数据库简单备份脚本
- Android之ViewDragHelper
- 支付即服务、门店小程序、微信先享卡分别亮相,微信支付持续助力行业数字化升级
- 谷歌浏览器如何下载在线音频视频
- (亲测可用)基于matlab的用自写函数来实现图像的灰度处理sobel canny算子边缘检测
- PHP后台-微信小程序发送订阅消息(详细)
- word公式常用快捷键
- 7张图告诉你成功者与失败者的行为差别
- 给本本K46C升级内存并升级64位WIN7
- Oracle第二财季业绩表现抢眼 | 搜狗推出“唇语识别”技术 | FF宣布完成超10亿美元A轮融资
- QT中的LIBS用法
- java poi操作word模版 导出word文档(附工具类)
- easyexcel操作遇到的坑
- AMD CPU VMware 16 Pro安装macOS 10.15
- 配置使用costmap_2d_node
- 基于意图的网络(IBN)
- 精馏塔塔板数与c语言编程计算,精馏塔和塔板的主要工艺尺寸的计算
- JavaScript中数据类型的转换与undefined及Null
- Kotlin 基础学习