HDU 1166 敌兵布阵(线段树单点更新,板子题)
敌兵布阵
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 87684 Accepted Submission(s): 36912
#include <bits/stdc++.h>
using namespace std;
const int N=;
struct Node
{
int r,l,sum;
}tree[N<<];
//建树
void buildtree(int l,int r,int pos)
{
tree[pos].l=l;
tree[pos].r=r;
if(l==r)
{
scanf("%d",&tree[pos].sum);
return;
}
int mid=(l+r)/;
buildtree(l,mid,pos*);//建立左右子树
buildtree(mid+,r,pos*+);
tree[pos].sum=tree[pos*].sum+tree[pos*+].sum;
}
//节点更新
void update(int p,int c,int pos)
{
if(tree[pos].l==tree[pos].r&&tree[pos].l==p)
{
tree[pos].sum+=c;
return;
}
int mid=(tree[pos].l+tree[pos].r)/;
if(p<=mid)
update(p,c,pos*);//更新左右子节点
else update(p,c,pos*+);
tree[pos].sum=tree[pos*].sum+tree[pos*+].sum;
}
//点查询->query
int query(int l,int r,int pos)
{
if(tree[pos].l==l&&tree[pos].r==r)
return tree[pos].sum;
int mid=(tree[pos].l+tree[pos].r)/;
if(r<=mid)
return query(l,r,pos*);
else if(l>mid)
return query(l,r,pos*+);
else return query(l,mid,pos*)+query(mid+,r,pos*+);
}
//主函数操作
int main()
{
int t;
scanf("%d",&t);
int cas=;
while(t--)
{
int n;
scanf("%d",&n);
printf("Case %d:\n",cas++);
buildtree(,n,);
while()
{
char str[];
scanf("%s",str);
if(str[]=='E')
break;
else if(str[]=='Q')
{
int t1,t2;
scanf("%d%d",&t1,&t2);
printf("%d\n",query(t1,t2,));
}
else if(str[]=='S')
{
int t1,t2;
scanf("%d%d",&t1,&t2);
update(t1,-t2,);
}
else if(str[]=='A')
{
int t1,t2;
scanf("%d%d",&t1,&t2);
update(t1,t2,);
}
}
}
return ;
}
HDU 1166 敌兵布阵(线段树单点更新,板子题)的更多相关文章
- HDU.1166 敌兵布阵 (线段树 单点更新 区间查询)
HDU.1166 敌兵布阵 (线段树 单点更新 区间查询) 题意分析 加深理解,重写一遍 代码总览 #include <bits/stdc++.h> #define nmax 100000 ...
- HDU 1166 敌兵布阵(线段树单点更新)
敌兵布阵 单点更新和区间更新还是有一些区别的,应该注意! [题目链接]敌兵布阵 [题目类型]线段树单点更新 &题意: 第一行一个整数T,表示有T组数据. 每组数据第一行一个正整数N(N< ...
- HDU 1166 敌兵布阵(线段树单点更新,区间查询)
描述 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况 ...
- HDU 1166 敌兵布阵 线段树单点更新求和
题目链接 中文题,线段树入门题,单点更新求和,建一棵树就可以了. #include <iostream> #include <cstdio> #include <cmat ...
- 【原创】hdu 1166 敌兵布阵(线段树→单点更新,区间查询)
学习线段树的第三天...真的是没学点啥好的,又是一道水题,纯模板,我个人觉得我的线段树模板还是不错的(毕竟我第一天相当于啥都没学...找了一整天模板,对比了好几个,终于找到了自己喜欢的类型),中文题目 ...
- hdu 1166 敌兵布阵 线段树 点更新
// hdu 1166 敌兵布阵 线段树 点更新 // // 这道题裸的线段树的点更新,直接写就能够了 // // 一直以来想要进线段树的坑,结果一直没有跳进去,今天算是跳进去吧, // 尽管十分简单 ...
- HDU 1166 敌兵布阵 <线段树 单点修改 区间查询>
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- HDU 1754 线段树 单点跟新 HDU 1166 敌兵布阵 线段树 区间求和
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- hdu 1166 敌兵布阵 线段树区间修改、查询、单点修改 板子题
题目链接:敌兵布阵 题目: C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视 ...
随机推荐
- springboot学习(三)————使用HttpMessageConverter进行http序列化和反序列化
以下内容,如有问题,烦请指出,谢谢! 对象的序列化/反序列化大家应该都比较熟悉:序列化就是将object转化为可以传输的二进制,反序列化就是将二进制转化为程序内部的对象.序列化/反序列化主要体现在程序 ...
- JPA的基本使用
前提: 创建一个springboot项目 创建一个名为springboottest的MySQL数据库 1 jar包准备 jpa的jar包 mysql驱动的jar包 druid数据库连接池的jar包 l ...
- 扩展1 - Python 获取当前时间的用法
1.先导入库:import datetime 2.获取当前日期和时间:now_time = datetime.datetime.now() 3.格式化成我们想要的日期:strftime() 比如:“2 ...
- lesson - 14 linux系统日常管理3
1. Linux系统服务管理工具ntsysv 类似图形界面管理工具,如果没有该命令使用 yum install -y ntsysv 安装常用服务:crond, iptables, network, s ...
- Windows Server服务器日常管理技巧
高效管理服务器一直离不开有效的服务器管理技巧,尽管你已经掌握了不少这方面的技巧,但服务器还有许许多多的技巧在等着你的总结,等着你的挖掘;这不,下面的一些服务器管理窍门就是笔者在最近的工作中总结出来的, ...
- 解决mysql漏洞 Oracle MySQL Server远程安全漏洞(CVE-2015-0411)
有时候会检测到服务器有很多漏洞,而大部分漏洞都是由于服务的版本过低的原因,因为官网出现漏洞就会发布新版本来修复这个漏洞,所以一般情况下,我们只需要对相应的软件包进行升级到安全版本即可. 通过查阅官网信 ...
- Java 包装类Integer的值比较
对于包装类型Integer的值比较与int的值比较是不同的: public class Java_Val_Compare { public static void main(String[] ar ...
- 深入理解 React JS 中的 setState
此文主要探讨了 React JS 中的 setState 背后的机制,供深入学习 React 研究之用. 在课程 React.js入门基础与案例开发 中,有些同学会发现 React JS 中的 set ...
- spring boot 遇到 supported setting property http://xml.org/sax/properties/lexical-handler
解决链接:http://apache-fop.1065347.n5.nabble.com/org-xml-sax-SAXNotSupportedException-thrown-by-FOP-td11 ...
- K:java中properties文件的读写
Properties类与.properties文件: Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集的类,不过Properties有特殊 ...