http://acm.hdu.edu.cn/showproblem.php?pid=1166

区间更新,区间求和

// File Name: hdu1166.cpp
// Author: bo_jwolf
// Created Time: 2013年08月16日 星期五 11时27分03秒

#include<vector>
#include<list>
#include<map>
#include<set>
#include<deque>
#include<stack>
#include<bitset>
#include<algorithm>
#include<functional>
#include<numeric>
#include<utility>
#include<sstream>
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<ctime>

using namespace std;

#define lson l , mid , rt << 1
#define rson mid + 1 , r , rt << 1 | 1 

const int maxn = 55555 ;
//int sum[ maxn << 2 ] ;

struct node
{
	int sum ;
}tree[ maxn << 2 ] ;

void PushUp( int rt )
{
	tree[ rt ].sum  = tree[ rt << 1 ].sum + tree[ (rt << 1 | 1 ) ].sum ;
}
void build( int l , int r , int rt )
{
	if( l == r )
	{
		scanf( "%d" , &tree[ rt ].sum );
		return ;
	}
	int mid = ( l + r ) >> 1 ;
	build( lson ) ;
	build( rson ) ;
	PushUp( rt ) ;
}

void update( int p , int add , int l , int r , int rt )
{
	if( l == r )
	{
		tree[ rt ].sum  += add ;
		return ;
	}
	int mid = ( l + r ) >> 1 ;
	if( p <= mid )
		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 tree[ rt ].sum ;
	}
	int mid = ( l + r ) >> 1 ;
	int ret = 0 ;
	if( L <= mid )
			ret += query( L , R , lson ) ;
	if( R > mid )
			ret += query( L , R , rson ) ;
	return ret ;
}

int main()
{
	int T , n ;
	scanf( "%d" , &T ) ;
	for( int cas = 1 ; cas <= T ; ++cas )
	{
		printf( "Case %d:\n" , cas ) ;
		scanf( "%d" , &n ) ;
		build( 1 , n , 1 ) ;
		char op[ 10 ] ;
		while( scanf( "%s" , op ) )
		{
			if( op[ 0 ] == 'E' )
				break ;
			int a , b ;
			scanf( "%d%d" , &a , &b ) ;
			if( op[ 0 ] == 'Q' )
				printf( "%d\n" , query( a , b , 1 , n , 1 ) ) ;
			else if( op[ 0 ] == 'S' )
				update( a , -b , 1 , n , 1 ) ;
			else
				update( a , b , 1 , n , 1 ) ;
		}
	}
return 0;
}

hdu1166-敌兵布阵(线段树)的更多相关文章

  1. HDU1166 敌兵布阵(线段树)

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

  2. 【生活没有希望】hdu1166敌兵布阵 线段树

    线段树水题刷刷,生活没有希望 最近看到代码跟树状数组差不多短的非递归线段树,常数也很小——zkw线段树 于是拿道水题练练手 短到让人身无可恋 ;pos;pos/=) a[pos]+=x;} ,ans= ...

  3. HDU 1166 敌兵布阵(线段树单点更新)

    敌兵布阵 单点更新和区间更新还是有一些区别的,应该注意! [题目链接]敌兵布阵 [题目类型]线段树单点更新 &题意: 第一行一个整数T,表示有T组数据. 每组数据第一行一个正整数N(N< ...

  4. 敌兵布阵(线段树HDU 1166)

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submissi ...

  5. HDU 1754 线段树 单点跟新 HDU 1166 敌兵布阵 线段树 区间求和

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  6. HDU 1166 敌兵布阵(线段树单点更新,板子题)

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  7. B - 敌兵布阵 线段树的点

    B - 敌兵布阵 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Descriptio ...

  8. HDU 1166 敌兵布阵 线段树

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  9. hdu 1166 敌兵布阵(线段树详解)

    Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任 ...

  10. HDU 1166 敌兵布阵 线段树单点更新求和

    题目链接 中文题,线段树入门题,单点更新求和,建一棵树就可以了. #include <iostream> #include <cstdio> #include <cmat ...

随机推荐

  1. 借One-Class-SVM回顾SMO在SVM中的数学推导--记录毕业论文5

    上篇记录了一些决策树算法,这篇是借OC-SVM填回SMO在SVM中的数学推导这个坑. 参考文献: http://research.microsoft.com/pubs/69644/tr-98-14.p ...

  2. CEGUI0.8.4例子

    #define GLUT_DISABLE_ATEXIT_HACK#pragma comment(lib,"glew32.lib")#include<stdlib.h># ...

  3. Newtonsoft.Json 处理多态类型的反序列化

    Newtonsoft.Json的序列化和反序列化很成熟也很好用, 最近在处理多态类型的反序列化中遇到了问题, 反序列化后只能到基类,而得不到也不能转换到子类.从网上查询了一番后,需要写一个创建类型的C ...

  4. c#.net WinForm 线程内 调用窗体控件

    richTextBox1.BeginInvoke(new EventHandler(delegate { richTextBox1.AppendText("正在提交服务器..\r\n&quo ...

  5. mysql事务,SET AUTOCOMMIT,START TRANSACTION

    http://yulei568.blog.163.com/blog/static/135886720071012444422/ MyISAM不支持 START TRANSACTION | BEGIN ...

  6. 【wikioi】1281 Xn数列(矩阵乘法)

    http://wikioi.com/problem/1281/ 矩阵真是个神奇的东西.. 只要搞出一个矩阵乘法,那么递推式可以完美的用上快速幂,然后使复杂度降到log 真是神奇. 在本题中,应该很快能 ...

  7. PostgreSQL trigger (function) examples

    postgres=# \c warehouse_db You are now connected to database "warehouse_db" as user " ...

  8. WebApiThrottle限流框架

    ASP.NET Web API Throttling handler is designed to control the rate of requests that clients can make ...

  9. js中的prototype和constructor

    本文正确性有待商榷,高手路过请不吝指教 1.js中只有对象,包括对象,函数,常量等. 对象不用解释.函数也有属性,常见之一就是prototype.常量也有属性: (3).__proto__;//Num ...

  10. cxGrid使用汇总1

    这些都不是原创,只是平时收集到资料然后整理的,有些可能百度一下到处都是而且还大同小异也有些不是很好找,现在贴出来希望给那些用到cxGrid的人会有所帮助 1. 去掉cxGrid中台头的Box 解决:在 ...