分块的单点修改查询区间和_SSOJ2613单点修改区间求和

题目大意:有n个数,不断地对其中的某个数字进行修改,不断地询问某一段数字的和,如何快速解决?

题目描述

给你n个整数,请问第x个到第y个的和是多少?

与上一题不同,在询问前后,这n个数中的某个数可能会有改动。

输入

第一行:n和m,表示n个数,m个询问

第二行:n个整数

接下来m行,每行3个整数o、x、y:o表示求和还是更改数字,如果o=1,表示将第x个数改成y;如果o=2,表示求第x个到第y个的和。

输出

对于每次询问和,输出区间的和。

样例输入

5 3

1 2 -3 6 5

2 2 4

1 2 5

2 1 3

样例输出

5

3

提示

1<=x、y<=n;1<=o<=2;n个数,每个数的绝对值不超过1000;5<=n、m<=200000

(10个点数据范围:5, 10, 100, 500, 1000, 5000, 10000, 50000, 100000, 150000, 200000)

解题思路

读入n个数到数组a,对于每次询问,如果是修改,则直接修改a[i]的值,如果是询问区间和,值直接累加区间所有元素,时间复杂度O(m*n),不能拿满分。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值