差分数组
文章平均质量分 75
是小怪兽啊
失败总是贯穿人生始终
展开
-
RMQ算法
什么是RMQ? RMQ指的是求一个区间的某个数值(例如:最大值,最小值…) 首先还是要先推数学公式 设a[i]是要求区间最值的数列,F[i, j]F[i,j]表示从第i个数起连续2^j个数中的最大值。(DP的状态) 例如: a数列为:3 2 4 5 6 8 1 2 9 7 F[1,0]表示第1个数起,长度为2^0=1的最大值,其实就是3这个数。 同理 F[1,1]=max(3,2)=3,F[1,2]=max(3,2,4,5) = 5 F[1,3] = max(3,2,4,5,6,8,1,2) = 8; 并且原创 2021-07-13 17:17:44 · 165 阅读 · 0 评论 -
差分数组浅析
什么是差分数组? 简单的来说,你有一个原始数组,而差分数组就是你原始数组的每一个数减上一个数 假设有原始数组a[10],差分数组b[10] 那么就有 for(int i=1;i<10;i++){ b[i]=a[i]-a[i-1]; } 因为我们是从b[1]开始,所以要设个a[0]=0,而且a中的值是从a[1]开始存储 差分数组有什么用? 当我们要对一个区间进行修改,那么差分数组的作用一定就是求多次进行区间修改后的数组 为什么要用差分数组? 举个栗子 我们不难发现当一个区间同时加减一个数时,差分数原创 2021-06-07 16:24:58 · 133 阅读 · 0 评论