差分和前缀和算法题解

本文介绍了前缀和算法和差分算法的概念及其在一维和二维数组中的应用。针对激光炸弹问题,展示了如何使用二维前缀和求解。同时,通过一维差分算法解决区间操作问题,求解最少操作次数以及可能的数列种类。最后,讨论了一群牛的身高问题,通过差分数组确定每头牛的最大可能身高。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1前缀和算法:

就是把一个数列的n个数相加,但是不同段相加的数列和,做减法,可以得到不同段(不从1开始)的数列和,这是一维上的应用

  • sum[0]=a[0]
  • sum[1] = a[0] + a[1]sum[1]=a[0]+a[1]
  • sum[2] = a[0] + a[1] + a[2]sum[2]=a[0]+a[1]+a[2]

利用递推,只要计算 n 次,就能计算出所有的前缀和:sum[i] = sum[i-1] + a[i]。当然,我们也能用 sum[]sum[] 反推计算出 a[]a[]:a[i] = sum[i] - sum[i-1]。

具体应用:

一维:S[i] = a[1] + a[2] + ... a[i]
a[l] + ... + a[r] = S[r] - S[l - 1]

二维前缀和:

S[i, j] = 第i行j列格子左上部分所有元素的和
S[i][j] =S[i-1][j]+S[i][j-1] -S[i-1][j-1]+a[i][j]

具体应用:激光炸弹

地图上有 NN 个目标,用整数 Xi,YiXi,Yi 表示目标在地图上的位置,每个目标都有一个价值 WiWi。

注意:不同目标可能在同一位置。

现在有一种新型的激光炸弹,可以摧毁一个包含 R×RR×R 个位置的正方形内的所有目标。

激光炸弹的投放是通过卫星定位的,但其有一个缺点,就是其爆炸范围,即那个正方形的边必须和 x,yx,y 轴平行。

求一颗炸弹最多能炸掉地图上总价值为多少的目标。

输入格式

第一行输入正整数 NN 和 RR,分别代表地图上的目标数目和正方形的边长,数据用空格隔开。

接下来 NN&n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值