2017西安交大ACM小学期数据结构 [树状数组]
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, 输出答案, 一行一个。
8 3 3 1 4 1 5 9 2 6 2 1 8 2 1 2 2 2 1 8 2
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小学期数据结构 [树状数组]相关推荐
- 2017西安交大ACM小学期数据结构 [树状数组 离散化]
Problem E 发布时间: 2017年6月28日 12:53 最后更新: 2017年6月29日 21:35 时间限制: 1000ms 内存限制: 64M 描述 给定一个长度为n的序列a ...
- 2017西安交大ACM小学期数据结构 [树状数组,极大值]
Problem D 发布时间: 2017年6月28日 10:51 最后更新: 2017年6月28日 16:38 时间限制: 1000ms 内存限制: 32M 描述 给定一个长度为n的序列a ...
- 2017西安交大ACM小学期数据结构 [又是树状数组、异或]
Problem F 发布时间: 2017年6月28日 10:31 最后更新: 2017年6月29日 21:35 时间限制: 2000ms 内存限制: 64M 描述 给定一个n×m的矩形, ...
- 2017西安交大ACM小学期数据结构 [分块、二维矩阵]
Problem B 发布时间: 2017年6月28日 10:06 最后更新: 2017年6月28日 16:35 时间限制: 2000ms 内存限制: 32M 描述 给定一个n×m的矩形, ...
- 2017西安交大ACM小学期数据结构 [分块,区间修改,单点查询]
Problem A 发布时间: 2017年6月28日 09:29 最后更新: 2017年6月28日 13:03 时间限制: 1000ms 内存限制: 32M 描述 给定一个长度为n的序列a ...
- 2017西安交大ACM小学期数据结构 [线段树]
Problem B+ 发布时间: 2017年7月1日 02:08 最后更新: 2017年7月1日 02:10 时间限制: 1000ms 内存限制: 64M 描述 给定一个长度为n的序列a1 ...
- 2017西安交大ACM小学期 有趣异或[Trie树]
有趣异或 发布时间: 2017年7月4日 23:59 最后更新: 2017年7月5日 14:56 时间限制: 1500ms 内存限制: 512M 描述 给定n个非负整数,保证这些数两两不相 ...
- 2017西安交大ACM小学期 敏感词汇[AC自动机]
敏感词汇 发布时间: 2017年7月5日 00:23 最后更新: 2017年7月6日 14:40 时间限制: 1500ms 内存限制: 128M 描述 我们知道,在进行聊天时,有些词汇是敏 ...
- 2017西安交大ACM小学期 文本查找[AC自动机]
文本查找 发布时间: 2017年7月5日 00:10 最后更新: 2017年7月5日 13:47 时间限制: 1500ms 内存限制: 128M 描述 给定m种两两不同的关键词,并给定一段 ...
最新文章
- vuex刷新页面数据丢失怎么解决_vuex状态机浅谈
- Shell获取时间,日期,上月,当月,下月
- 1Python生成高质量Html文件:Pyh模块+Bootstrap框架
- Eclipse 通过 JDBC 连接 SQL Server
- python用一行代码画个迷宫_用 Python 制作一个迷宫游戏
- python中config命令_python的logging.config使用详解
- 搭建新环境的准备工作
- PHP简单留言板代码
- 毕业设计 嵌入式超声波雷达可视化系统
- ubuntu20.04【一键脚本安装wps并配置字体】
- 计算机实践ps折扇,用PS打造一把水墨画折扇的教程
- C++实现客户机(CLIENT)类
- pos共识机制_共识机制:权益证明机制(POS)
- 读懂这三个关键词,就明白迅雷链为什么受开发者欢迎
- nginx是什么、怎么用、以及用nginx解决实际问题
- 电力系统机组组合优化调度(IEEE14节点、IEEE30节点、IEEE118节点)(Matlab代码实现)
- 逻辑赋值(Logical Assignment)
- OGRE渲染引擎之地形、天空和雾
- 胡小胖:微商创业必备的硬件工具
- 考研英语阅读理解做题技巧(1):例证题
热门文章
- excel筛选排序从小到大_excel表格怎么按字数的多少来排列!
- 算法题目——Problem A 二进制(北邮机试)
- 问题 D: 二叉树求高度
- 69. Sqrt(x)010(二分法求解+详解注释)
- 7-44 基于词频的文件相似度 (30 分)(思路加详解+set容器简便做法)兄弟们冲呀呀呀呀呀 今天你AC了吗
- [Spring5]IOC容器_Bean管理XML方式_外部属性文件
- 图的建立-邻接矩阵表示(C语言)
- C++实现五子棋小游戏
- java中vi是什么意思_java中的public void是什么意思?
- android webview framework,android – Webview导致ANR