题目
题目传送门: 【P3373】【模板】线段树 2 – 洛谷
如题,已知一个数列,你需要进行下面三种操作:
1. 将某区间每一个数乘上 $x$。
2. 将某区间每一个数加上 $x$。
3. 求出某区间每一个数的和。
题目传送门: 【P3373】【模板】线段树 2 – 洛谷
如题,已知一个数列,你需要进行下面三种操作:
1. 将某区间每一个数乘上 $x$。
2. 将某区间每一个数加上 $x$。
3. 求出某区间每一个数的和。
题目传送门: 洛谷 P3369、LibreOJ #104、BZOJ 3224
我们需要实现一种数据结构,实现以下操作。
1. 插入 $ x $ 数;
2. 删除 $ x $ 数(若有多个相同的数,因只删除一个);
3. 查询 $ x $ 数的排名(若有多个相同的数,因输出最小的排名);
4. 查询排名为 $ x $ 的数;
5. 求 $ x $ 的前趋(前趋定义为小于 $ x $,且最大的数);
6. 求 $ x $ 的后继(后继定义为大于 $ x $,且最小的数)。
之前学习栈和队列就不是很系统,这会趁着有时间赶紧补一补。
栈 (stack) 是一种“先入后出”的数据结构。栈的基本结构类似洗盘子,你必须把上面的盘子全部移走,才能够取得下面的盘子。栈的图解如下:
可以看出,栈由两部分组成,数据和栈指针。
在 C++ 中,我们一般通过数组模拟来实现栈。
栈的类型声明如下: