Wannafly挑战赛14 B-前缀查询

题目:https://www.nowcoder.com/acm/contest/81/B


在一个 Minecraft 村庄中,村长有这一本小写字母构成的名册(字符串的表),
每个名字旁边都记录着这位村民的声望值,而且有的村民还和别人同名。
随着时间的推移,因为没有村民死亡,这个名册变得十分大。
现在需要您来帮忙维护这个名册,支持下列 4 种操作:
1. 插入新人名 s i,声望为 a i
2. 给定名字前缀 p i 的所有人的声望值变化 d i
3. 查询名字为 s j 村民们的声望值的和(因为会有重名的)
4. 查询名字前缀为 p j 的声望值的和

输入描述:

第一行为两个整数 0 ≤ N ≤ 105,表示接下来有 N 个操作;
接下来 N 行,每行输入一个操作,行首为一个整数 1 ≤ oi ≤ 4,表示这一行的操作的种类,
那么这一行的操作和格式为:
1. 插入人名,这一行的格式为 1 s i a i,其中 |a i| ≤ 10 3 2. 前缀修改声望,这一行的格式为 2 p i d i,其中 |d i| ≤ 10 3 3. 查询名字的声望和,这一行的格式为 3 s j 4. 查询前缀的声望和,这一行的格式为 4 p j
输入保证插入人名的字符串的长度和小于或等于 10 5,总的字符串的长度和小于或等于 10 6

输出描述:

对于每一次询问操作,在一行里面输出答案。

猜你喜欢

转载自blog.csdn.net/oWuHen12/article/details/80063161