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 ...
随机推荐
- ubuntu 安装 mongodb 数据库
第一步:下载安装包 下载版本:3.0.1 下载链接:http://www.mongodb.org/downloads 首先在linux中解压缩安装程序 通过命令操作: 解压:[root@localho ...
- 数学图形之SineSurface与粽子曲面
SineSurface直译为正弦曲面.这有可能和你想象的正弦曲线不一样.如果把正弦曲线绕Y轴旋转,得到的该是正弦波曲面.这个曲面与上一节中的罗马曲面有些相似,那个是被捏过的正四面体,这个则是个被捏过正 ...
- design-twitter
https://leetcode.com/problems/design-twitter/ class Twitter { unordered_map<int, set<int> & ...
- Javascript模块化工具require.js教程
转自:http://www.w3cschool.cc/w3cnote/requirejs-tutorial-1.html, http://www.w3cschool.cc/w3cnote/requir ...
- android.net.Uri 简介 API
android.net.Uri 简介 public abstract class android.net.Uri extends Object implements Parcelable, Compa ...
- iframe跨域与session失效问题
何为跨域跨域session/cookie? 也就是第三方session/cookie.第一方session/cookie指的是访客当前访问的网站给访客的浏览器设置的seesion /cookie, 会 ...
- ListView 控件与 内容
1)由控件获取内容:ListViewItem item = Utilities.GetVisualParent<ListViewItem>(chx); if (item == null) ...
- IDA 远程调试 Android so
1.把ida 目录下android_server 传到android 目录中如:adb push android_server /data/local/tmp/adb shell 进入模拟器cd ...
- tcp协议的端口状态
Listening Syn_sent syn_rcvd established close_wait time_wait --------- 对方主动关闭(对方调用close()), 我方的状态变为 ...
- 转: telnet命令学习
1.每天一个linux命令(58):telnet命令 转自: http://www.cnblogs.com/peida/archive/2013/03/13/2956992.html telnet命令 ...