HDU1166 上好的线段树模板&&树状数组模板

自己写的第一棵线段树&第一棵树状数组 莫名的兴奋

线段树:

#include <cstdio>
using namespace std;
int cases,n,tree[200500],ql,qr;
char s[50];
void build(int l,int r,int num){
if(l==r){scanf("%d",&tree[num]);return;}
int mid=(l+r)/2;
build(l,mid,num*2);
build(mid+1,r,num*2+1);
tree[num]=tree[2*num]+tree[2*num+1];
}
int qu(int l,int r,int num){
if(ql<=l&&qr>=r)return tree[num];
int mid=(l+r)/2,sum=0;
if(mid>=ql)sum+=qu(l,mid,num*2);
if(mid<qr)sum+=qu(mid+1,r,num*2+1);
return sum;
}
void add(int l,int r,int num){
if(l==r){tree[num]+=qr;return;}
int mid=(l+r)/2;
if(mid>=ql)add(l,mid,num*2);
if(mid<ql)add(mid+1,r,num*2+1);
tree[num]=tree[2*num]+tree[2*num+1];
}
int main()
{
scanf("%d",&cases);
for(int ii=1;ii<=cases;ii++){
printf("Case %d:\n",ii);
scanf("%d",&n);
build(1,n,1);
while(scanf("%s",s)&&s[0]!='E'){
scanf("%d%d",&ql,&qr);
if(s[0]=='Q')printf("%d\n",qu(1,n,1));
else if(s[0]=='A')add(1,n,1);
else if(s[0]=='S')qr=-qr,add(1,n,1);
}
}
}

树状数组:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib>
using namespace std;
int cases,n,a[50005],c[50005];
char s[50];
int lowbit(int x){return x&(-x);}
void add(int x,int v)
{
while(x<=n)
{
c[x]+=v;
x+=lowbit(x);
}
}
int find(int x)
{
int ans=0;
while(x>0)
{
ans+=c[x];
x-=lowbit(x);
}
return ans;
}
int main()
{
scanf("%d",&cases);
for(int ii=1;ii<=cases;ii++)
{
printf("Case %d:\n",ii);
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
add(i,a[i]);
}
while(scanf("%s",s)&&s[0]!='E')
{
register int xx,yy;
scanf("%d%d",&xx,&yy);
if(s[0]=='Q')
printf("%d\n",find(yy)-find(xx-1));
else if(s[0]=='A')
add(xx,yy);
else if(s[0]=='S')
add(xx,-yy);
}
memset(c,0,sizeof(c));
memset(a,0,sizeof(a));
}
}

HDU 1166 线段树模板&树状数组模板的更多相关文章

  1. HDU 1166 敌兵布阵 (数状数组,或线段树)

    题意:... 析:可以直接用数状数组进行模拟,也可以用线段树. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000&quo ...

  2. HDU 1166 敌兵布阵(线段树/树状数组模板题)

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

  3. HDU 1166 敌兵布阵 树状数组小结(更新)

    树状数组(Binary Indexed Tree(BIT), Fenwick Tree) 是一个查询和修改复杂度都为log(n)的数据结构.主要用于查询任意两位之间的所有 元素之和,但是每次只能修改一 ...

  4. luogu3368树状数组模板2

    题目链接:https://www.luogu.org/problemnew/show/P3368 题意:与模板1不同的是这题的操作是树状数组并不在行的区间更新和单点查找,如果按照模板1那样写肯定会T. ...

  5. 敌兵布阵 HDU 1166 线段树

    敌兵布阵 HDU 1166 线段树 题意 这个题是用中文来描写的,很简单,没什么弯. 解题思路 这个题肯定就是用线段树来做了,不过当时想了一下可不可用差分来做,因为不熟练就还是用了线段树来做,几乎就是 ...

  6. hdu 1166 线段树(sum+单点修改)

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

  7. 树状数组模板(pascal) 洛谷P3374 【模板】树状数组1

    题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表示该数列数字的个数和操作的总个数. ...

  8. 敌兵布阵 HDU - 1166 (树状数组模板题,线段树模板题)

    思路:就是树状数组的模板题,利用的就是单点更新和区间求和是树状数组的强项时间复杂度为m*log(n) 没想到自己以前把这道题当线段树的单点更新刷了. 树状数组: #include<iostrea ...

  9. HDU - 1166 树状数组模板(线段树也写了一遍)

    题意: 汉语题就不说题意了,用到单点修改和区间查询(树状数组和线段树都可以) 思路: 树状数组的单点查询,单点修改和区间查询. 树状数组是巧妙运用二进制的规律建树,建树就相当于单点修改.这里面用到一个 ...

随机推荐

  1. 10java内存

    java内存 1.栈---存储的是变量(不仅仅只有变量),不会对存储的内容进行赋值,存储的内容使用完成之后会立即进行清除 2.堆---存储的是对象.会对存储的内容进行赋值,存储内容使用完成之后会在某个 ...

  2. swift--Xcode7 使用Alamofire框架发送HTTP请求报错

    控制台打印的错误信息: Application Transport Security has blocked a cleartext HTTP (http://) resource load sinc ...

  3. 洛谷——P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm

    P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm 题意翻译 题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N< ...

  4. SQL上门

    学习这个 介绍:SQL 是用于访问和处理数据库的标准的计算机语言.结构化化查询语言! SQL可以分为两大部分:数据操作语言(DML)和数据定义语言(DDL) 数据操作语言:select.update. ...

  5. HTML学习笔记之标签基础

    目录 1.基本标签 2.链接 3.图像 4.表格 5.列表 6.块与布局 1.基本标签 (1)标题与段落 标签 <h1> ~ <h6> 分别用于定义一至六级标题,标签 < ...

  6. BZOJ 2501 [usaco2010 Oct]Soda Machine

    [题意概述] 给出一个[0,1,000,000,000]的整数数轴,刚开始每个位置都为0,有n个区间加操作,最后询问数轴上最大的数是多少. [题解] 我写的是离散化后线段树维护区间最值. 其实貌似不用 ...

  7. Mysql学习总结(41)——MySql数据库基本语句再体会

    1.数据定义语言(DDL):定义和管理数据对象,比如建立数据库.数据表 数据操作语言(DML):用于操作数据库对象中的包含的数据. 数据查询语言(DQL):用于查询数据库对象中包含的数据,能够对表进行 ...

  8. IDEA 工具使用报错总结

    读前语:此文章仅给非入门级观看 1.使用Debug  无法运行,而使用Run 则正常启动,报错代码如下 1 Error running 'jx_web': Unable to open debugge ...

  9. POJ - 3538 - Domestic Networks

    先上题目: Domestic Networks Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 732   Accepted: ...

  10. hdu_1039_Easier Done Than Said_201311051511

    Easier Done Than Said? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/O ...