HDUOJ------敌兵布阵
敌兵布阵
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 7 Accepted Submission(s) : 3
#include<cstdio>
#include<cstdlib>
#include<iostream>
#define MAXN 50002
int look[MAXN],ans=;
using namespace std;
struct node
{
int l,r,value,add;
};
node tree[*MAXN];
void build(int v,int l,int r)
{
tree[v].l=l; //初始化
tree[v].r=r;
tree[v].value=;
tree[v].add=;
if(l==r)
{
tree[v].value=look[r]; //进行节点的初始化
return ;
}
int mid=(l+r)/;
build(v*,l,mid);
build(v*+,mid+,r);
tree[v].value=tree[v*].value+tree[v*+].value;
}
void update(int v ,int l,int r,int m)
{
if(tree[v].l==l && tree[v].r==r)
{
tree[v].value+=m*(r-l+);
tree[v].add=m;
return ;
}
if(tree[v].add)
{
tree[v*].add+=tree[v].add;
tree[v*+].add+=tree[v].add;
tree[v].add=;
}
int mid=(tree[v].l+tree[v].r)/;
if(r<=mid)
{
update(v*,l,r,m);
}
else
{
if(l>mid)
update(v*+,l,r,m);
else
{
update(v*,l,mid,m);
update(v*+,mid+,r,m);
}
}
tree[v].value=tree[v*].value+tree[v*+].value; //将父级更新
} void query(int v,int l,int r)
{
if(tree[v].l==l&&tree[v].r==r)
{
ans+=tree[v].value; //开始的时候,ans=0
return ;
}
if(tree[v].add)
{
tree[v*].add+=tree[v].add;
tree[v*+].add+=tree[v].add;
tree[v].add=;
}
int mid=(tree[v].l+tree[v].r)/;
if(r<=mid)
{
query(v*,l,r);
}
else
{
if(l>mid)
query(v*+,l,r);
else
{
query(v*,l,mid);
query(v*+,mid+,r);
}
}
}
int main()
{
int t,n,i,st,en,j;
char ask[];
scanf("%d",&t);
for(j=;j<=t;j++)
{
scanf("%d",&n);
for(i=;i<=n;i++)
{
scanf("%d",look+i);
}
build(,,n);
printf("Case %d:\n",j);
while(scanf("%s",ask),*ask!='E')
{
switch(*ask)
{
case 'A':
scanf("%d%d",&st,&en);
update(,st,st,en);break;
case 'S':
scanf("%d%d",&st,&en);
update(,st,st,-en);break;
case 'Q':
scanf("%d%d",&st,&en);
query(,st,en);
printf("%d\n",ans); ans=;break;
}
}
}
//system("PAUSE");
return ;
}
HDUOJ------敌兵布阵的更多相关文章
- 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 敌兵布阵(线段树单点更新)
敌兵布阵 单点更新和区间更新还是有一些区别的,应该注意! [题目链接]敌兵布阵 [题目类型]线段树单点更新 &题意: 第一行一个整数T,表示有T组数据. 每组数据第一行一个正整数N(N< ...
- hdu acm 1166 敌兵布阵 (线段树)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- HDU 1166 敌兵布阵
B - 敌兵布阵 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Sta ...
- HDU 1166 敌兵布阵(线段树模板题)
题目链接: 传送门 敌兵布阵 Time Limit: 2000MS Memory Limit: 32768 K Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头 ...
- ACM: 敌兵布阵 解题报告 -线段树
敌兵布阵 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description Li ...
- hdu 敌兵布阵(线段树之单点更新)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- hdu 1166 敌兵布阵--BIT
BIT模版题,学完直接刷毫无压力,水的不要不要的 敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...
- hdu 1166:敌兵布阵(树状数组 / 线段树,入门练习题)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
随机推荐
- [Android Pro] Android中IntentService的原理及使用
转载自:http://blog.csdn.net/ryantang03/article/details/8146154 在Android开发中,我 们或许会碰到这么一种业务需求,一项任务分成几个子任务 ...
- C语言变量的类型和存储位置
. C语言变量主要分为全局变量.静态全局变量.局部变量.静态局部变量和寄存器变量.其中静态变量用static关键字进行修饰.程序所占用的内存可以分为以下几个部分: ()代码段-存放程序代码,只读的,不 ...
- Vulkan --vulkan in powervr
zhankeng 跨平台 多线程 low cpu overhead object orientated vulkan有利于tile based的地方 明确依赖声明 细粒度同步 render passe ...
- 触摸事件UITouch的应用
因为UIView或者UIViewController都是继承与UIResponder ,所以都有UITouch这个事件.当用户点击屏幕的时候,会产生触摸事件. 通过UITouch事件,可以监听到开始触 ...
- 【转】php里面也可以使用协程
原文链接:http://blog.51cto.com/chinalx1/2089327 http://nikic.github.io/2012/12/22/Cooperative-multitaski ...
- 关于COM的Unicode string的精彩论述
I need to make a detour for a few moments, and discuss how to handle strings in COM code. If you are ...
- [Android] Content provider, ContentResolver
Content provider的作用: Content providers manage access to a structured set of data. They encapsulate t ...
- JVM总结-内存监视手段及各区域内存溢出解决
转载:https://blog.csdn.net/xuqu_volition/article/details/53786096 引言 本文仅关注一些常见的虚拟机内存监视手段,以及JVM运行时数据区各个 ...
- C#.NET常见问题(FAQ)-如何给Listbox添加右键菜单
1 拖一个ContextMenuStrip控件,然后可以直接在界面上编辑,也可以在FormLoad的时候动态添加 2 把这两个控件关联起来就可以实现listBox1的右键菜单跟ContextMen ...
- C#.NET常见问题(FAQ)-程序如何把窗体文件从从一个项目中复制到另一个项目
一个窗体有三个文件,全部拷贝到新的项目中 在新的项目中点击显示所有文件,然后右击导入的文件,点击包括在项目中,会自动修改颜色(此时还没有被识别为窗体) 重启这个项目,三个文件已经被识别出来了 ...