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

#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. javascript跨域解决方案

    最近遇到了https跨域访问http域的问题,很多朋友理所当然的认为简单,问题是https跨域访问到http域上的资源,会进行相互通信,没有解决该问题,只能把外部资源扔到了新浪的sae上,通过http ...

  2. Oracle中正则表达式的使用

    Oracle10开始支持正则表达式. ORACLE中的支持正则表达式的函数主要有下面四个: 1. REGEXP_LIKE :          与LIKE的功能相似 2. REGEXP_INSTR : ...

  3. 【学习总结】OS X , IOS , IOS SDK , XCode之间的关系

    几个基本的概念 : OS X : 属于桌面PC级别(IMac,MacPro等)对应安装的操作系统 IOS : 属于移动设备级别(Iphone,Ipad等)对应安装的操作系统 XCode: 是一个IDE ...

  4. (转载)Unity3d摄像机Camera参数详解

    1. Clear Flags:清除标记.决定屏幕的哪部分将被清除.一般用户使用对台摄像机来描绘不同游戏对象的情况,有3中模式选择: Skybox:天空盒.默认模式.在屏幕中的空白部分将显示当前摄像机的 ...

  5. Python socket模拟HTTP请求

    0x00 起 最近在做一个对时间要求比较高的扫描器,需要封装一下SOCKET模拟HTTP发包的一些常用函数.简单的说,就是重写一下requests中的get.post方法. 今天在写的时候,遇到一枚很 ...

  6. sql with递归

       with temp as ( select Id, UserId, OfficeID, RoleId, DeptId, IsDelete, IsEnd, ParentId from [dbo]. ...

  7. [转载]C#对象序列化与反序列化

    文章写的实在是太好了,忍不住转来: http://www.cnblogs.com/LiZhiW/p/3622365.html#_Toc8478 1.对象序列化的介绍 (1).NET支持对象序列化的几种 ...

  8. c++ string char* const char*

    #include <iostream> #include <string> #include <cstring> using namespace std; int ...

  9. jquery 对 Json 的各种遍历

    grep <script type='text/javascript' src="/jquery.js"></script> <script type ...

  10. Flume学习——BasicTransactionSemantics

    org.apache.flume.channel.BasicTransactionSemantics An implementation of basic Transaction semantics ...