hdu acm 1166 敌兵布阵 (线段树)
敌兵布阵
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 37903 Accepted Submission(s): 15985
10
1 2 3 4 5 6 7 8 9 10
Query 1 3
Add 3 6
Query 2 7
Sub 10 2
Add 6 3
Query 3 10
End
6
33
59
/*
hdu 1166 敌兵布阵
线段树 基本操作
by zhh
*/
#include <iostream>
#include <stdio.h>
#include <cstring>
#include <algorithm>
#include <stdlib.h> using namespace std;
int a[]; struct line
{
int left;
int right;
int sum;
}p[];
void build(int l,int r,int s)//建立线段树,并在域sum中赋初值
{
p[s].left=l;
p[s].right=r;
if(l==r)
{
p[s].sum=a[l];
return ;
}
build(l,(l+r)/,s*);
build((l+r)/+,r,s*+);
p[s].sum=p[s*].sum+p[s*+].sum;
}
void add(int i,int j,int s)//增加数之后刷新线段树
{
if(p[s].left<=i&&p[s].right>=i)
{
p[s].sum+=j;
if(p[s].left==p[s].right)
return;
add(i,j,s*);
add(i,j,s*+); }
}
/*void add(int i,int j,int s)
{
if(p[s].left==i&&p[s].right==i)
{
p[s].sum=j;
return;
}
int mid=(p[s].left+p[s].right)/2;
if(i<=mid) add(i,j,s*2);
else add(i,j,s*2+1);
p[s].sum=p[s*2].sum+p[s*2+1].sum; }*/
int finds(int i,int j,int s)//查找所给线段上的sum和
{
if(p[s].left>j)
return ;
if(p[s].right<i)
return ;
if(p[s].left>=i&&p[s].right<=j)
return p[s].sum;
return finds(i,j,s*)+finds(i,j,s*+);
}
/*int finds(int i,int j,int s)
{
if(p[s].left==i&&p[s].right==j)
return p[s].sum;
int mid=(p[s].left+p[s].right)/2;
if(mid>=j) return finds(i,j,s*2);
if(mid<i) return finds(i,j,s*2+1);
return finds(i,mid,s*2)+finds(mid+1,j,s*2+1);
}*/
int main()
{
int T;
cin>>T;
for(int t_n=;t_n<=T;t_n++)
{
printf("Case %d:\n",t_n);
int n,sum=;
cin>>n;
a[]=;
for(int i=;i<=n;i++)
{
cin>>a[i];
}
build(,n,);
char order[];
int i,j;
scanf("%s",order);
while(order[]!='E')
{
scanf("%d %d",&i,&j);
if(order[]=='A')
{
// a[i]+=j;
// j=a[i];
add(i,j,);
} if(order[]=='S')
{
// a[i]-=j;
// j=a[i];
add(i,-j,);//减可以被认为加上负的 }
if(order[]=='Q')
printf("%d\n",finds(i,j,));
scanf("%s",order);
}
}
return ;
}
hdu acm 1166 敌兵布阵 (线段树)的更多相关文章
- HDU.1166 敌兵布阵 (线段树 单点更新 区间查询)
HDU.1166 敌兵布阵 (线段树 单点更新 区间查询) 题意分析 加深理解,重写一遍 代码总览 #include <bits/stdc++.h> #define nmax 100000 ...
- hdu 1166 敌兵布阵 线段树 点更新
// hdu 1166 敌兵布阵 线段树 点更新 // // 这道题裸的线段树的点更新,直接写就能够了 // // 一直以来想要进线段树的坑,结果一直没有跳进去,今天算是跳进去吧, // 尽管十分简单 ...
- HDU 1166 敌兵布阵(线段树单点更新,板子题)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- HDU 1754 线段树 单点跟新 HDU 1166 敌兵布阵 线段树 区间求和
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- HDU 1166 敌兵布阵 <线段树 单点修改 区间查询>
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- hdu 1166 敌兵布阵 (线段树、单点更新)
敌兵布阵Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
- hdu 1166 敌兵布阵 线段树区间修改、查询、单点修改 板子题
题目链接:敌兵布阵 题目: C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视 ...
- HDU 1166 敌兵布阵(线段树单点更新)
敌兵布阵 单点更新和区间更新还是有一些区别的,应该注意! [题目链接]敌兵布阵 [题目类型]线段树单点更新 &题意: 第一行一个整数T,表示有T组数据. 每组数据第一行一个正整数N(N< ...
- HDU 1166 敌兵布阵 线段树
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
随机推荐
- 查看已安装的CentOS版本信息:
如何查看已安装的CentOS版本信息: 1)[root@localhost ~]# cat /proc/version Linux version 2.6.18-194.el5 (mockbuild@ ...
- Struts框架——(二)Struts原理with登录实例
二. Struts基本工作流程 假设现在有以下情景: 用户正在浏览一个用STRUTS的技术构建的网站主页,主页上有个登陆表单,用户填好登陆名和密码,单击"登陆"按钮,就激活了以下一 ...
- Java中Timer的用法
现在项目中用到需要定时去检查文件是否更新的功能.timer正好用于此处. 用法很简单,new一个timer,然后写一个timertask的子类即可. 代码如下: package comz.autoup ...
- 根据UIColor对象,获取对应的RGBA值
- (NSArray *)getRGBWithColor:(UIColor *)color { CGFloat red = 0.0; CGFloat green = 0.0; CGFloat blue ...
- sublime插件@sublimelinter安装使用
sublimelinter插件是一款sublime编辑器的代码校验插件,支持多种语言,对于前端来说主要包含css和js校验. 要是用这款插件 1)安装node,然后在全局安装jshint(npm in ...
- 如何用Maven创建web项目(具体步骤)
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 使用eclipse插件创建一个web project 首先创建一个Maven的Project如下图 我们勾选上Creat ...
- vertx简单服务创建
import java.util.HashMap;import java.util.Map; import org.slf4j.Logger;import org.slf4j.LoggerFactor ...
- 一点一滴学shell-Shell expr的用法 (转)
原文链接:http://desheng666.blog.163.com/blog/static/4908408220121643953425/ expr命令一般用于整数值,但也可用于字符串.一般格式为 ...
- [PHP] Phalcon应用升级PHP7记录
升级主要有 php7, phalcon, extension 这三个方面工作. [php7] 我选择从 git 中源码包安装,下面是主要安装步骤: git clone -b php- https:// ...
- runtime 运行机制2
Mike_zh QQ:82643885 end: blogTitle 博客的标题和副标题 博客园 首页 新随笔 联系 订阅 <a id="MyLinks1_XMLLink" ...