Problem C

发布时间: 2017年6月28日 11:38   最后更新: 2017年6月28日 16:38   时间限制: 1000ms   内存限制: 32M

描述

给定一个长度为n的序列a1, a2, ..., an, 其中ai∈[1,10]

给出q个操作, 操作分为两种

对于形如1 x y的操作, 将ax改为y, 满足1≤x≤n, 1≤y≤10

对于形如2 x y z的操作, 输出下标介于[x,y]之间的元素中, 值为z的元素个数, 满足1≤x≤y≤n, 1≤z≤10

9×104≤n≤105, 9×104≤q≤105

输入

第一行两个整数n, q, 意义如上所述。
接下来q行, 每行第一个数为opt, 如果opt=1, 后面紧跟两个数, 意义如上所述; 如果opt=2, 后面紧跟三个数, 意义如上所述。

输出

对于每个操作3, 输出答案, 一行一个。

样例输入1 复制

8 3
3 1 4 1 5 9 2 6
2 1 8 2
1 2 2
2 1 8 2

样例输出1

1
2

非常简单的一道题目,开10个树状数组。

bitree[z]含义分别是值为z的位置分布的树状数组。

当把数字a[x]变成y的时候,要做两件事情

第一件:消除旧值的影响

add(a[x],x,-1);

第二件

a[x] = y

add(a[x],x,1)

增加对新的数的影响

查询区间[x,y]等于z的数的个数时候

直接在z对应的树状数组里求部分和就OK了

是不是非常简单

#include <cstdio>
const int MAX = 1e5+7;
int a[MAX];
int in[11][MAX];
int n,q;
inline int lowbit(int x){return x&(-x);
}
void add(int id,int pos,int val){while(pos <= n){in[id][pos] += val;pos += lowbit(pos);}
}
int getsum(int id,int pos){int res = 0;while(pos){res += in[id][pos];pos -= lowbit(pos);}return res;
}
int main(){scanf("%d%d",&n,&q);for(int i = 1;i <= n;i++){scanf("%d",&a[i]);add(a[i],i,1);}while(q--){int opt;scanf("%d",&opt);if(opt == 1){int x,y;scanf("%d%d",&x,&y);add(a[x],x,-1);a[x] = y;add(a[x],x,1);}else {int x,y,z;scanf("%d%d%d",&x,&y,&z);printf("%d\n",getsum(z,y) - getsum(z,x-1));}}}

2017西安交大ACM小学期数据结构 [树状数组]相关推荐

  1. 2017西安交大ACM小学期数据结构 [树状数组 离散化]

    Problem E 发布时间: 2017年6月28日 12:53   最后更新: 2017年6月29日 21:35   时间限制: 1000ms   内存限制: 64M 描述 给定一个长度为n的序列a ...

  2. 2017西安交大ACM小学期数据结构 [树状数组,极大值]

    Problem D 发布时间: 2017年6月28日 10:51   最后更新: 2017年6月28日 16:38   时间限制: 1000ms   内存限制: 32M 描述 给定一个长度为n的序列a ...

  3. 2017西安交大ACM小学期数据结构 [又是树状数组、异或]

    Problem F 发布时间: 2017年6月28日 10:31   最后更新: 2017年6月29日 21:35   时间限制: 2000ms   内存限制: 64M 描述 给定一个n×m的矩形, ...

  4. 2017西安交大ACM小学期数据结构 [分块、二维矩阵]

    Problem B 发布时间: 2017年6月28日 10:06   最后更新: 2017年6月28日 16:35   时间限制: 2000ms   内存限制: 32M 描述 给定一个n×m的矩形, ...

  5. 2017西安交大ACM小学期数据结构 [分块,区间修改,单点查询]

    Problem A 发布时间: 2017年6月28日 09:29   最后更新: 2017年6月28日 13:03   时间限制: 1000ms   内存限制: 32M 描述 给定一个长度为n的序列a ...

  6. 2017西安交大ACM小学期数据结构 [线段树]

    Problem B+ 发布时间: 2017年7月1日 02:08   最后更新: 2017年7月1日 02:10   时间限制: 1000ms   内存限制: 64M 描述 给定一个长度为n的序列a1 ...

  7. 2017西安交大ACM小学期 有趣异或[Trie树]

    有趣异或 发布时间: 2017年7月4日 23:59   最后更新: 2017年7月5日 14:56   时间限制: 1500ms   内存限制: 512M 描述 给定n个非负整数,保证这些数两两不相 ...

  8. 2017西安交大ACM小学期 敏感词汇[AC自动机]

    敏感词汇 发布时间: 2017年7月5日 00:23   最后更新: 2017年7月6日 14:40   时间限制: 1500ms   内存限制: 128M 描述 我们知道,在进行聊天时,有些词汇是敏 ...

  9. 2017西安交大ACM小学期 文本查找[AC自动机]

    文本查找 发布时间: 2017年7月5日 00:10   最后更新: 2017年7月5日 13:47   时间限制: 1500ms   内存限制: 128M 描述 给定m种两两不同的关键词,并给定一段 ...

最新文章

  1. vuex刷新页面数据丢失怎么解决_vuex状态机浅谈
  2. Shell获取时间,日期,上月,当月,下月
  3. 1Python生成高质量Html文件:Pyh模块+Bootstrap框架
  4. Eclipse 通过 JDBC 连接 SQL Server
  5. python用一行代码画个迷宫_用 Python 制作一个迷宫游戏
  6. python中config命令_python的logging.config使用详解
  7. 搭建新环境的准备工作
  8. PHP简单留言板代码
  9. 毕业设计 嵌入式超声波雷达可视化系统
  10. ubuntu20.04【一键脚本安装wps并配置字体】
  11. 计算机实践ps折扇,用PS打造一把水墨画折扇的教程
  12. C++实现客户机(CLIENT)类
  13. pos共识机制_共识机制:权益证明机制(POS)
  14. 读懂这三个关键词,就明白迅雷链为什么受开发者欢迎
  15. nginx是什么、怎么用、以及用nginx解决实际问题
  16. 电力系统机组组合优化调度(IEEE14节点、IEEE30节点、IEEE118节点)(Matlab代码实现)
  17. 逻辑赋值(Logical Assignment)
  18. OGRE渲染引擎之地形、天空和雾
  19. 胡小胖:微商创业必备的硬件工具
  20. 考研英语阅读理解做题技巧(1):例证题

热门文章

  1. excel筛选排序从小到大_excel表格怎么按字数的多少来排列!
  2. 算法题目——Problem A 二进制(北邮机试)
  3. 问题 D: 二叉树求高度
  4. 69. Sqrt(x)010(二分法求解+详解注释)
  5. 7-44 基于词频的文件相似度 (30 分)(思路加详解+set容器简便做法)兄弟们冲呀呀呀呀呀 今天你AC了吗
  6. [Spring5]IOC容器_Bean管理XML方式_外部属性文件
  7. 图的建立-邻接矩阵表示(C语言)
  8. C++实现五子棋小游戏
  9. java中vi是什么意思_java中的public void是什么意思?
  10. android webview framework,android – Webview导致ANR