![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法代码
文章平均质量分 75
dengdefang
这个作者很懒,什么都没留下…
展开
-
线段树--求区间最大差值
#include #define MAX(a, b) ((a) > (b) ? (a) : (b)) #define MIN(a, b) ((a) > (b) ? (b) : (a)) #define MAXN 50000 int num[MAXN] = {0}; struct SegmentTree { int left; int right; int maxValue; int原创 2012-09-12 16:24:47 · 751 阅读 · 0 评论 -
二维树状数组--子矩阵求和
#include #define MAXN 1025 int c[MAXN][MAXN] = {0}; int a[MAXN][MAXN] = {0}; int lowbit(int n) { return n & (n ^ (n - 1)); } void add(int x, int y, int num, int n) { for (int i = x; i <= n; i +原创 2012-09-12 16:22:57 · 683 阅读 · 0 评论 -
树状数组--区间求和
树状数组是一个查询和修改复杂度都为log(n)的数据结构,假设数组a[1..n],那么查询a[1]+...+a[n]的时间是log(n)级别的。所以如果要解决“数组中的元素不断被修改,怎么才能快速地获取数组中连续m个数的和”这个问题的话,用树状数组就再好不过了 首先,什么是树状数组呢?树状数组就是用另外一个数组再保存当前数组的值,设树状数组为C[n],那么有C[i] = a[i -原创 2012-09-12 16:19:28 · 12928 阅读 · 1 评论