算法基础之高精度、前缀和 以及差分

1、高精度

1.1、计算数据的长度

大整数的长度小于10的6次方
在这里插入图片描述

1.2、大整数存储方式

把个位存到数组中的第0位,把最高位存在数组中的最后一位。因为如果需要进位的时候直接在数组末尾添加上数字比较容易。
在这里插入图片描述

1.3、计算:模拟人工计算、

A(i)+B(i)+进位
在这里插入图片描述

1.3.1 加法

在这里插入图片描述

1.3.2 减法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.3.3 乘法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.3.4 除法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、 前缀和

2.1、一维前缀和

在这里插入图片描述
在这里插入图片描述
作用是能快速求出数组中一段的和
在这里插入图片描述
s(0)=0 是设定一个值,减少边界值判断。能直接求1到某个数的和。
在这里插入图片描述
在这里插入图片描述

2.2、二维前缀和

快速求出某一子矩阵的和
在这里插入图片描述
算某一矩阵中所有点和的思路
在这里插入图片描述
计算s(i,j)
在这里插入图片描述
算的不是面积,是这个区域中的所有点的总和。

2.2.1 子矩阵的和

在这里插入图片描述

在这里插入图片描述

3、差分

3.1一维差分概念

差分是前缀和的逆运算
假象一个b数组,是的a数组是b数组的前缀和,则b是a的差分,a是b的前缀和。
在这里插入图片描述
在这里插入图片描述

3.2作用

有b数组,能利用o(n)的时间复杂度得到a数组
在这里插入图片描述
实现an 在 l到r的区间中+c。直接做,就利用循环,使每一个an+c,时间复杂度是o(n)。利用差分能降到o(1).
在这里插入图片描述

作用是在差分bn利用o(1)的时间复度,实现an+c的效果。但是实现an+c需要o(n)的时间复杂度。

在这里插入图片描述
实现 l到r +c 只需要对差分中的bl+c即可。al到ar都会+c。但是a(r+1)不想+c,则只需要b(l+r)-c即可。
在这里插入图片描述
可以直接利用差分构造an。在[1,1]上+a1,在[2,2]上+a2,在[n,n]上加an。

3.3 差分

在这里插入图片描述

在这里插入图片描述

3.4 二维差分

在这里插入图片描述
a(ij)是差分数组的前缀和
坐标轴 以正方形左上为原点 向右为x 向下为y。
在这里插入图片描述
b(x,y)+c 意味着箭头下侧和右侧的所有元素+c

去掉不该+c的区域
在这里插入图片描述

补上一个多减的c
在这里插入图片描述
把a(n)加c由 o(n)的时间复杂度变成o(1)。
初始化
在这里插入图片描述

3.5差分矩阵

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值