
数据结构
文章平均质量分 52
月竹流
这个作者很懒,什么都没留下…
展开
-
对于树状数组的简要理解
利用树状数组能够求解逆序对,这也是较为普遍的应用,他的本质是利用树状数组存储了元素出现的次数。前缀和能够做到求解区间和,但是如果某一个元素发生了修改那么此时需要重新求解前缀和,才能去求解区间和,那么利用树状数组可以能够在logn的时间复杂度内完成:区间求和,单点修改这两个操作。由这个图我们知道,如果我要修改a[3]的值,那么同时我需要修改的是c[3],c[4],c[8]他们的进位是对应的lowbit()。由此我们观察到,如果求前七个元素之和的化,从这个元素不断的减lowbit()即可。今天就到这了拜拜六!原创 2023-10-13 17:04:18 · 124 阅读 · 0 评论 -
动态规划略讲
第三步建立转态转移方程:由于此时只能向下或者向右下角这两个方向走,所以此时状态转移方程为:f[i][j] = max(f[i-1][j], f[i-1][j-1]) + a[i][j]。方程的含义为f[i][j]:第i层,到达第j个数的最大值。第一行n,表示n行(n原创 2023-03-03 17:37:46 · 89 阅读 · 0 评论 -
对于特殊的递归函数时间复杂度的计算方法
其中这个a代表的是子问题被调用的次数;b代表的是子问题的规模都是N/b规模的(注意子问题的规模一定是等规模的);O(N^d)代表的是除了子问题调用之外剩余代码的时间复杂度。主要将a,b,d三个参数确定即可,分为以下三种情况。一系列子问题规模是等规模的。原创 2023-03-02 11:29:18 · 120 阅读 · 0 评论