编程题
### 问题描述 在一个庞大的秘密数据仓库中,有一个从 $1$ 到 $N$ 的编号的无线电频道。每个频道都有一个信号值,初次时所有频道的信号值都为 $0$。现在你需要支持两种操作: 1. 修改某一编号范围 $[l, r]$ 内的频道的信号值(增加或减少某个值)。 2. 查询某一编号范围 $[l, r]$ 内信号值大于或等于 $x$ 的频道数量。 但这不是一个简单的任务,因为频道的数量 $N$ 非常大,可能高达 $10^9$,并且你不可能知道所有频道的信号具体情况。因此,你需要设计一个程序来帮助你完成这两种操作。 ### 输入格式 第一行包含一个整数 $Q$,表示操作的数量。 接下来的 $Q$ 行,每行描述一个操作。如果是修改操作,格式为 `1 l r v`,其中 $l$ 和 $r$ 为频道编号的范围,$v$ 为需要增加或减少的信号值($v$ 可能为负)。如果是查询操作,格式为 `2 l r x`,其中 $l$ 和 $r$ 为频道编号范围,$x$ 为查询的信号阈值。 ### 输出格式 对于每个查询操作,输出一行,表示编号范围 $[l, r]$ 内信号值大于或等于 $x$ 的频道数量。 ### 样例输入 ``` 5 1 1 5 3 2 1 3 2 1 3 5 -1 2 2 7 3 1 1000000000 1000000000 5 ``` ### 样例输出 ``` 3 1 ``` ### 样例说明 首先,将频道 $1$ 到 $5$ 的信号值加 $3$,所以频道 $1$ 到 $5$ 的信号值变为 $3$。 接下来的查询是查找频道 $1$ 到 $3$ 的信号值大于或等于 $2$ 的频道数量,所以输出 $3$。 然后将频道 $3$ 到 $5$ 的信号值减 $1$,频道 $3$ 到 $5$ 的信号值变为 $2$。 接下来的查询是查找频道 $2$ 到 $7$ 的信号值大于或等于 $3$ 的频道数量,所以输出 $1$。 最后的操作将编号为 $1000000000$ 的频道信号值增加 $5$,但没有关于这个频道的查询操作。 ### 测评数据规模 $1 \leq Q \leq 100$,$1 \leq l \leq r \leq 10^9$,$-10^4 \leq v \leq 10^4$,$1 \leq x \leq 10^4$。
查看答案
赣ICP备20007335号-2