题意:

给出一行数字,然后可以修改其中第i个数字,并且可以询问第i至第j个数字的和(i <= j)。

输入:

首行输入一个t,表示共有t组数据。

接下来每行首行输入一个整数n,表示共有n个数字。

接下来每行首先输入一个字符串,如果是”Add”,接下来是两个整数a,b,表示给第i个数增加b。如果是”Query”,接下来是两个整数a,b,表示查询从第i个数到第j个数之间的和。如果是”End”,表示这组数据结束。

输出:

每组数据首先输出”Case X: ”,其中X表示第x组数。

每次查询,输出计算结果,每个结果占一行。

题解:

点修改与区间求和,可以用树状数组模板。

具体见代码——

 #include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std; const int N = ; int t, n;
int a[N];
int c[N];
char s[];
int x, y; int lowbit(int x)
{
return x&(-x);
} void Add(int x, int y)
{
a[x] += y;
while(x <= n)
{
c[x] += y;
x += lowbit(x);
}
} int Sum(int x)
{
int rt = ;
while(x > )
{
rt += c[x];
x -= lowbit(x);
}
return rt;
} int Summ(int l, int r)
{
int rt = ;
while(r >= l)
{
if(r-lowbit(r) < l)
{
rt += a[r];
r -= ;
}
else
{
rt += c[r];
r -= lowbit(r);
}
}
return rt;
} void Query(int a, int b)
{
printf("%d\n", Sum(b)-Sum(a-));
//printf("%d\n", Summ(a, b));
} int main()
{
//freopen("test.in", "r", stdin);
scanf("%d", &t);
for(int tm = ; tm <= t; tm++)
{
scanf("%d", &n);
memset(c, , sizeof(c));
memset(a, , sizeof(a));
int y;
for(int i = ; i <= n; i++)
{
scanf("%d", &y);
Add(i, y);
}
printf("Case %d:\n", tm); scanf("%s", s);
while(s[] != 'E')
{
scanf("%d%d", &x, &y);
if(s[] == 'A') Add(x, y);
if(s[] == 'Q') Query(x, y);
if(s[] == 'S') Add(x, -y);
scanf("%s", s);
}
}
}

树状数组区间求和模板——

http://www.cnblogs.com/mypride/p/5001858.html

hdu 1116 敌兵布阵(树状数组区间求和)的更多相关文章

  1. HDU 1166 敌兵布阵 树状数组||线段树

    http://acm.hdu.edu.cn/showproblem.php?pid=1166 题目大意: 给定n个数的区间N<=50000,还有Q个询问(Q<=40000)求区间和. 每个 ...

  2. HDU 1166 敌兵布阵(树状数组)

    之前用过了线段树的做法,树状数组的也补上吧 #include<iostream> #include<cstdio> #include<cstring> using ...

  3. HDU 1166 敌兵布阵 树状数组小结(更新)

    树状数组(Binary Indexed Tree(BIT), Fenwick Tree) 是一个查询和修改复杂度都为log(n)的数据结构.主要用于查询任意两位之间的所有 元素之和,但是每次只能修改一 ...

  4. HDOJ(HDU).1166 敌兵布阵 (ST 单点更新 区间求和)

    HDOJ(HDU).1166 敌兵布阵 (ST 单点更新 区间求和) 点我挑战题目 题意分析 根据数据范围和询问次数的规模,应该不难看出是个数据结构题目,题目比较裸.题中包括以下命令: 1.Add(i ...

  5. HDU1166 敌兵布阵(树状数组)

    C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况.由于 ...

  6. hdu1166 敌兵布阵 树状数组/线段树

    数列的单点修改.区间求和 树状数组或线段树入门题 #include<stdio.h> #include<string.h> ],N; void add(int x,int a) ...

  7. HDU 1166 敌兵布阵 (数状数组,或线段树)

    题意:... 析:可以直接用数状数组进行模拟,也可以用线段树. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000&quo ...

  8. hdoj 1166 敌兵布阵(树状数组)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 思路分析:该问题为动态连续和查询问题,使用数组数组可以解决:也可使用线段树解决该问题: 代码如下 ...

  9. hdu-1166 敌兵布阵---树状数组模板

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1166 题目大意: 维护动态的区间和,单点更新,就是模板题 #include<iostream& ...

  10. HDU-1166 敌兵布阵 (树状数组模板题——单点更新,区间求和)

    题目链接 AC代码: #include<iostream> #include<cstdio> #include<cstring> #include<algor ...

随机推荐

  1. 「MYSQL」MYSQL中的int(11)到底代表什么意思?

    一.前言 在工作中经常要与mysql打交道,但是对mysql的各个字段类型一直都是一知半解,因此写本文总结记录一番. 二.简介 对于int类型的一些基础知识其实上图已经说的很明白了,在这里想讨论下常用 ...

  2. 阿里云centos7.3安装lamp环境

    参考文档:http://www.jb51.net/article/96649.htm http://m.blog.csdn.net/qq_33813365/article/details/766337 ...

  3. 分享一个C#创建Barcode的DLL

    用于工作需要产生Barcode,随手从网上找了一个DLL(原文地址忘了) http://files.cnblogs.com/panchunting/barcode_bin.zip 使用非常简单,只需添 ...

  4. C++笔试易错题集(持续更新)

    1.如下代码输出结果是什么? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include<stdio.h> char *myString() {     ...

  5. Java练习之使用StringBuilder

    package string.demo; /* * 将数组变为字符串输出 */ public class StringBuilderTest { /** * @param args */ public ...

  6. Axure RP Pro 7.0

    Axure RP Pro专为Rapid Prototype Design而生,它可以辅助产品经理快速设计完整的产品原型,并结合批注.说明以及流程图.框架图等元素将产品完整地表述给各方面设计人员,如UI ...

  7. selenium玩转svg操作

    今天写脚本发现页面有svg结构,里面的元素无法定位,查找很多资料,然后就记录下来 初步尝试直接在页面中获取svg中包含元素的xpath,直接利用selenium方法访问,无法捕获到相关元素信息. SV ...

  8. Java继承概述

    继承概述 : 父类(超类,基类): 子类(派生类): extends 只能继承一个类,Java不支持多重继承: 子类继承父类之后,子类可以调用父类的属性和方法, 也可以重写父类的属性和方法,还可以增加 ...

  9. 我的CSS命名规则

    常见class关键词: 布局类:header, footer, container, main, content, aside, page, section 包裹类:wrap, inner 区块类:r ...

  10. python中使用pillow绘制汉字

    # pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pillow from PIL import Image, ImageFont, I ...