线段树 (本题无需建树,少了很多)

#include<cstdio>
#include<cstring>
int sum[5000005],rt,data,lb,rb,n,m;
void add(int p,int l,int r,int now)//data新加的数 第p个位置 第now个子树
{
sum[now]+=data;
if(l==r) return;
int mid=(l+r)/2;
if(p<=mid) add(p,l,mid,2*now);
else add(p,mid+1,r,2*now+1);
}
int query(int l,int r,int now)
{
int mid=(l+r)/2;
if(lb<=l&&rb>=r) return(sum[now]);
if(rb<=mid) return(query(l,mid,2*now));
else if(lb>mid) return(query(mid+1,r,2*now+1));
else return(query(l,mid,2*now)+query(mid+1,r,2*now+1));
}
int main()
{
int t,tt,i,j;
char s[100];
scanf("%d",&t);
for(tt=1;tt<=t;tt++){
scanf("%d",&n);
printf("Case %d:\n",tt);
memset(sum,0,sizeof(sum));
for(i=1;i<=n;i++){
scanf("%d",&data);
add(i,1,n,1);
}
while(1){
scanf("%s",&s);
if(s[0]=='E') break; else scanf("%d%d",&i,&j);
switch(s[0]){
case 'A':data=j;add(i,1,n,1);break;
case 'S':data=-j;add(i,1,n,1);break;
case 'Q':lb=i;rb=j;printf("%d\n",query(1,n,1));break;
}
}
}
return 0;
}

简单的树状数组

先给个经典图片

#include<iostream>
#include<cstdio>
#include<cstring>
int n,a[50005];
int lowbit(int a)
{
return(a&(-a));
}
void add(int p,int q)
{
for(int i=q;i<=n;i+=lowbit(i))
a[i]+=p;
}
int sum(int q)
{
int ans=0;
for(int i=q;i>0;i-=lowbit(i))
ans+=a[i];
return(ans);
}
int main()
{
int t,tt,i,j,k;
char s[100];
scanf("%d",&t);
for(tt=1;tt<=t;tt++){
scanf("%d",&n);
printf("Case %d:\n",tt);
memset(a,0,sizeof(a));
for(i=1;i<=n;i++){
scanf("%d",&k);
add(k,i);
}
while(1){
scanf("%s",&s);
if(s[0]=='E') break; else scanf("%d%d",&i,&j);
switch(s[0]){
case 'A':add(j,i);break;
case 'S':add(-j,i);break;
case 'Q':printf("%d\n",sum(j)-sum(i-1));break;
}
}
}
return 0;
}

hdu 1166(树状数组 或 线段树)的更多相关文章

  1. HDU 5618 Jam's problem again(三维偏序,CDQ分治,树状数组,线段树)

    Jam's problem again Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...

  2. HDU 5877 2016大连网络赛 Weak Pair(树状数组,线段树,动态开点,启发式合并,可持久化线段树)

    Weak Pair Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Tota ...

  3. bzoj 3110: [Zjoi2013]K大数查询 树状数组套线段树

    3110: [Zjoi2013]K大数查询 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 1384  Solved: 629[Submit][Stat ...

  4. [BZOJ 3196] 213平衡树 【线段树套set + 树状数组套线段树】

    题目链接:BZOJ - 3196 题目分析 区间Kth和区间Rank用树状数组套线段树实现,区间前驱后继用线段树套set实现. 为了节省空间,需要离线,先离散化,这样需要的数组大小可以小一些,可以卡过 ...

  5. [BZOJ 1901] Dynamic Rankings 【树状数组套线段树 || 线段树套线段树】

    题目链接:BZOJ - 1901 题目分析 树状数组套线段树或线段树套线段树都可以解决这道题. 第一层是区间,第二层是权值. 空间复杂度和时间复杂度均为 O(n log^2 n). 线段树比树状数组麻 ...

  6. POJ 1195 Mobile phones (二维树状数组或线段树)

    偶然发现这题还没A掉............速速解决了............. 树状数组和线段树比较下,线段树是在是太冗余了,以后能用树状数组还是尽量用......... #include < ...

  7. 【BZOJ3196】二逼平衡树(树状数组,线段树)

    [BZOJ3196]二逼平衡树(树状数组,线段树) 题面 BZOJ题面 题解 如果不存在区间修改操作: 搞一个权值线段树 区间第K大--->直接在线段树上二分 某个数第几大--->查询一下 ...

  8. BZOJ.4553.[HEOI2016&TJOI2016]序列(DP 树状数组套线段树/二维线段树(MLE) 动态开点)

    题目链接:BZOJ 洛谷 \(O(n^2)\)DP很好写,对于当前的i从之前满足条件的j中选一个最大值,\(dp[i]=d[j]+1\) for(int j=1; j<i; ++j) if(a[ ...

  9. P3157 [CQOI2011]动态逆序对(树状数组套线段树)

    P3157 [CQOI2011]动态逆序对 树状数组套线段树 静态逆序对咋做?树状数组(别管归并QWQ) 然鹅动态的咋做? 我们考虑每次删除一个元素. 减去的就是与这个元素有关的逆序对数,介个可以预处 ...

  10. BZOJ 1901 Zju2112 Dynamic Rankings 树状数组套线段树

    题意概述:带修改求区间第k大. 分析: 我们知道不带修改的时候直接上主席树就可以了对吧?两个版本号里面的节点一起走在线段树上二分,复杂度是O((N+M)logN). 然而这里可以修改,主席树显然是凉了 ...

随机推荐

  1. MongoDB之【增加用户认证、增加用户、删除用户、修改用户密码、读写权限、只读权限】

    说明:增加用户是针对数据库进行操作 1.进入到数据库 use dbname 2.针对当前数据库添加用户 权限是针对当前数据 1.添加并验证用户 > use admin > db.addUs ...

  2. wampsever在win10中安装扩展掉坑

    1.必须要退出wampserver 2.php pecl + 3.wampserver 64 3.0.6

  3. 快速搭建Web环境 Angularjs + Express3 + Bootstrap3

    快速搭建Web环境 Angularjs + Express3 + Bootstrap3 AngularJS体验式编程系列文章, 将介绍如何用angularjs构建一个强大的web前端系统.angula ...

  4. Spark小课堂Week6 启动日志详解

    Spark小课堂Week6 启动日志详解 作为分布式系统,Spark程序是非常难以使用传统方法来进行调试的,所以我们主要的武器是日志,今天会对启动日志进行一下详解. 日志详解 今天主要遍历下Strea ...

  5. CSS溢出文本省略(text-overflow)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  6. 九度OJ - 题目1481:Is It A Tree?

    题目描述: A tree is a well-known data structure that is either empty (null, void, nothing) or is a set o ...

  7. 子查询优化成join关联查询时要注意一对多关系

    mysql> select * from t where t.id in (select t1.tid from t1); +------+ | id | +------+ | +------+ ...

  8. MyEcpilise引入Maven项目目录不正常,无JRE,无Maven Dependencies

    右键项目--> Maven4MyEclipse --> Update Project Configuration

  9. python学习笔记14(多态、封装、继承)

    创建自已的对象(尤其是类型或者被称为类的对象)是python非常核心的概念. 多态: 可对不同类的对象使用同样的操作. 封装:对外部世界隐藏对象的工作细节. 继承:以普通的类为基础建立专门的类对象. ...

  10. 让<未将对象引用到实例>见鬼去吧!

    未将对象引用到实例,即NullReferenceException异常,我相信这是c#编程中最常见的错误之一,至少我在做项目的过程中,有很多时候都会抛出这个异常.每当这个异常出现的时候,我都会头皮一紧 ...