【线段树】HDU 1166 敌兵布阵
这道题目是线段树里面最基础的单点更新问题。
设计的知识点包括线段树的单点更新和区间查询。
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166
G++代码:
#include <cstdio>
#include <string>
using namespace std;
#define lson l, m, rt << 1
#define rson m+1, r, rt << 1 | 1
const int maxn = 50050;
int sum[maxn<<2];
void pushUp(int rt) {
    sum[rt] = sum[rt<<1] + sum[rt<<1|1];
}
void build(int l, int r, int rt) {
    if (l == r) {
        scanf("%d", &sum[rt]);
        return;
    }
    int m = (l + r) >> 1;
    build(lson);
    build(rson);
    pushUp(rt);
}
void update(int p, int add, int l, int r, int rt) {
    if (l == r) {
        sum[rt] += add;
        return;
    }
    int m = (l + r) >> 1;
    if (p <= m) update(p, add, lson);
    else update(p, add, rson);
    pushUp(rt);
}
int query(int L, int R, int l, int r, int rt) {
    if (L <= l && r <= R) {
        return sum[rt];
    }
    int m = (l + r) >> 1;
    int res = 0;
    if (L <= m) res += query(L, R, lson);
    if (R >= m+1) res +=  query(L, R, rson);
    return res;
}
int T, n, cas = 1, a, b;
char s[11];
int main() {
    scanf("%d", &T);
    while (T --) {
        printf("Case %d:\n", cas ++);
        scanf("%d", &n);
        build(1, n, 1);
        while (scanf("%s", s)) {
            if (s[0] == 'Q') {  // Query
                scanf("%d%d", &a, &b);
                printf("%d\n", query(a, b, 1, n, 1));
            } else if (s[0] == 'A') {   // Add
                scanf("%d%d", &a, &b);
                update(a, b, 1, n, 1);
            } else if (s[0] == 'S') {   // Sub
                scanf("%d%d", &a, &b);
                update(a, -b, 1, n, 1);
            } else if (s[0] == 'E') {   // End
                break;
            }
        }
    }
    return 0;
}
【线段树】HDU 1166 敌兵布阵的更多相关文章
- HDU.1166 敌兵布阵 (线段树 单点更新 区间查询)
		HDU.1166 敌兵布阵 (线段树 单点更新 区间查询) 题意分析 加深理解,重写一遍 代码总览 #include <bits/stdc++.h> #define nmax 100000 ... 
- 【线段树I:母题】hdu 1166 敌兵布阵
		[线段树I:母题]hdu 1166 敌兵布阵 题目链接:hdu 1166 敌兵布阵 题目大意 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又開始忙乎了.A国在海 ... 
- hdu 1166 敌兵布阵 线段树 点更新
		// hdu 1166 敌兵布阵 线段树 点更新 // // 这道题裸的线段树的点更新,直接写就能够了 // // 一直以来想要进线段树的坑,结果一直没有跳进去,今天算是跳进去吧, // 尽管十分简单 ... 
- HDOJ(HDU).1166 敌兵布阵 (ST 单点更新 区间求和)
		HDOJ(HDU).1166 敌兵布阵 (ST 单点更新 区间求和) 点我挑战题目 题意分析 根据数据范围和询问次数的规模,应该不难看出是个数据结构题目,题目比较裸.题中包括以下命令: 1.Add(i ... 
- hdu 1166敌兵布阵(线段树)
		题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) M ... 
- HDU 1166 敌兵布阵 (树状数组)
		题目链接 : http://acm.hdu.edu.cn/showproblem.php?pid=1166 敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) ... 
- HDU 1166 敌兵布阵(线段树单点更新,板子题)
		敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ... 
- hdu 1166 敌兵布阵 (线段树单点更新)
		敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) ... 
- hdu 1166:敌兵布阵(树状数组 / 线段树,入门练习题)
		敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ... 
- HDU 1166 敌兵布阵(线段树单点更新)
		敌兵布阵 单点更新和区间更新还是有一些区别的,应该注意! [题目链接]敌兵布阵 [题目类型]线段树单点更新 &题意: 第一行一个整数T,表示有T组数据. 每组数据第一行一个正整数N(N< ... 
随机推荐
- [RxJS] Subject asObservable() method
			You can create your own state store, not using any state management libraray. You might have seen th ... 
- [React] Create an Animate Content Placeholder for Loading State in React
			We will create animated Content Placeholder as React component just like Facebook has when you load ... 
- JQuery通过click事件获取当前点击对象的id,name,value属性等
			$(".test").click(function () { var val=$(this).attr("id"); }) 
- flutter ListView 页面滚动组件
			ListView class A scrollable list of widgets arranged linearly. ListView is the most commonly used sc ... 
- Qt同步线程(QMutex QMutexLocker QReadWriteLock QSemaphore QWaitCondition )
			Qt同步线程 我们知道,多线程有的时候是很有用的,但是在访问一些公共的资源或者数据时,需要进行同步,否则会使数据遭到破坏或者获取的值不正确.Qt提供了一些类来实现线程的同步,如QMutex,QMute ... 
- Problem 1 bfs+set
			$des$ 小G有一个长度为 $n$ 的 01 串 T ,其中只有 $T_S = 1$,其余位置都是 $0$.现在小G可以进行若干次以下操作:选择一个长度为 $K$ 的连续子串(K是给定的常数),翻转 ... 
- StringSequences
			题意: 给出两个长度不超过\(50\)的字符串\(S, T\),每次可以在\(S\)中插入一个字符,把每次操作后的\(S\)写成一个序列,问有多少种不同的序列. 注意到我们可以把\(S\)拆分成一段一 ... 
- Spark设置自定义的InputFormat读取HDFS文件
			本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/technical/problem_spark_reading_hdfs_serial ... 
- 03、CPU主频,和性能
			性能?时间的倒数 有两个指标:一个是响应时间或者叫执行时间:一个是吞吐率或者带宽,这两个就可以理解为办事的时间和办事的多少. 而 性能= 1/响应时间 CPU时钟:计算机的计时单位 程序的CPU执行时 ... 
- .NET Core教程--给API加一个服务端缓存啦
			以前给API接口写缓存基本都是这样写代码: // redis key var bookRedisKey = ConstRedisKey.RecommendationBooks.CopyOne(book ... 
