目录
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差分矩阵