![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树状数组
文章平均质量分 95
qq_38232157
这个作者很懒,什么都没留下…
展开
-
POJ 2029 Get Many Persimmon Trees(二维树状数组,模板题)
二维树状数组,模板题题目意思:国王所在的领地有WH个点,当中n个点处有树, 如今领地上最多同意圈(当然能够少于)大小为ST的矩形,问最多可圈中多少棵树?本题要点:1、 维护二维的树状数组, 在坐标 (x, y) 处有一颗树,那么 update函数,只需要 c[x][y]++ 即可。2、 统计每一个大小为 S * T 的矩形的时候,遍历所有的可能的 S * T 大小的矩形,for(int i = S; i <= w; ++i){ for(int j = T; j <= h; ++原创 2020-07-28 22:13:21 · 131 阅读 · 0 评论 -
POJ 1990 MooFest(挑战程序设计竞赛, 树状数组)
挑战程序设计竞赛,283页, 树状数组题目意思:一群牛参加完牛的节日后都有了不同程度的耳聋,第i头牛听见别人的讲话,别人的音量必须大于v[i],当两头牛i,j交流的时候,交流的最小声音为max{v[i],v[j]}*他们之间的距离。现在有n头牛,求他们之间两两交流最少要的音量和本题要点:1、 先对牛按照V从小到大排序, 所有第i头牛和i之前的牛说话需要的总能量sum{v[i] * abs(x[i] - x[j])}(i > j), 对于绝对值 abs(x[i] - x[j],我们可以将牛原创 2020-06-29 14:04:58 · 133 阅读 · 0 评论 -
POJ 2155 Matrix (挑战程序设计竞赛, 二维树状数组)
挑战程序设计竞赛,283页, 二维树状数组二维前缀和,二维差分的概念二维差分 dif[i][j] = a[i][j] − a[i][j − 1] − a[i − 1][j] + a[i − 1][j − 1]本题要点:1、本题中,在一个矩形范围 左上角 (x1, y1), 右下角(x2, y2)内的所有 的0或者1 改变值,0 变为1, 1 变为 0.(可以看做是一直加1,偶数就是1, 奇数就是0)。题目转化为二维的矩形范围内每个数同时增加 d, 然后查询某个坐标 (x, y) 的值。2、利用原创 2020-06-28 17:58:22 · 95 阅读 · 0 评论 -
POJ 1195 Mobile phones (二维树状数组, 模板题)
二维树状数组题目意思:题意:给出一个S * S的矩阵,每个位置可以放手机,初始时每个位置的都是空的。现要执行一些操作:1 X Y A,在位置(X, Y)增加A台手机,2 L B R T,查询(L, B)到(R, T)的矩阵的手机有多少本题要点:1、二维树状数组定义:一维树状数组很容易扩展到二维,在二维情况下:数组A[][]的树状数组定义为:C[x][y] = ∑ a[i][j], 其中,x-lowbit(x) + 1 <= i <= x,y-lowbit(y) + 1 <原创 2020-06-21 13:06:25 · 163 阅读 · 0 评论 -
POJ 2828 Buy Tickets(算法竞赛进阶指南, 树状数组,二分)
算法竞赛进阶指南,261页, 树状数组,二分查找题目意思:有 n 个人,每个人有一个权值,初始队列没有人,这 n 个人进行 n 次插队,每次插队代表一个权值为 val 的人插入第 x 个位置后。最后从前往后输出每个人的权值。 题目类似于 POJ 2182本题要点:1、 虽然一个人现在插在 x 位置后,但是它最终的位置不一定是 x+1 ,再后来人的插入后可能位置还会变。但是,最后一个人插在 x 位置,这个人最后就是在 x+1 位置上;倒数第二个人,只用将最后一个人的位置"留空",再找第 x 个没原创 2020-06-20 17:50:52 · 152 阅读 · 0 评论 -
CH 4201 楼兰图腾(算法竞赛进阶指南, 树状数组)
算法竞赛进阶指南,205页,树状数组本题要点:1、利用树状数组求逆序数, 顺序数:以求 “V” 子图腾为例子, Right[i]表示 a[i] 的后面有几个数比它大, Left[i]表示a[i]前面有几个数比它大a) 倒叙扫描数组a,利用树状数组去除每个a[i] 后边有几个数比它大, 记为 Right[i]b) 顺序扫描数组a,利用树状数组去除每个a[i] 前面边有几个数比它大, 记为 Left[i]答案就是 sum{Right[i] * Left[i]}, 1 <= i <= n原创 2020-06-20 14:58:57 · 179 阅读 · 0 评论 -
POJ 2182 Lost Cows(算法竞赛进阶指南 ,树状数组,二分查找)
算法竞赛进阶指南,209页, 树状数组,二分查找题目意思:n头牛,身高互不相同, 范围是 1 ~ n; n 头牛排成一排,第i头牛,前面有 a[i] 头牛比它矮;求每头牛的身高;本题要点:1、 初始化一个数组b, 每个位置要么是0,要么是1; 用树状数组来维护数组b,然后从后往前扫描数组a:1)寻找数组b中第 a[i] + 1 个1的下标, 这个下标就是第i头牛的身高 ans[i] 2)将数组b的第 ans[i] 个1置零。实际就是 树状数组 update(ans[i], -1);2、 用原创 2020-06-20 10:22:41 · 140 阅读 · 0 评论 -
POJ 3468 A Simple Problem with Integers (树状和差分,分块,线段树延迟标记,详细的解答)
题目意思:Q:求L到R的和。C:L,R的数都加x看了网上很多代码,综合以下的解题步骤:本题用到的知识点:树状数组,差分简单介绍差分:假设原数组为 a[1] ~ a[n]用数组b[1] ~ b[n] 作为 a数组的差分数组b[1] = a[1]; //第一项特殊些b[2] = a[2] - a[1]; …b[n] = a[n] - a[n - 1];那么b的前缀和(加入前k项),刚好为数组a的第k项的值,a[k]sum{b[1], b[2], … , b[k]} = b[1] + b[原创 2020-05-15 23:49:15 · 184 阅读 · 1 评论 -
POJ 2481 Cows (树状+排序)
题意:给定n个区间(s,e),对于给出的每个区间,按顺序输出能够完全包含它的区间的个数,两个区间相等不算包含;思路:1、 先按 Cow 的s从小到大排序,再按e从大到小排序,假如 i < j, 观察 [si, ei] 和 [sj, ej]si <= sj, 如果 ei >= ej, 则说明,区间 [si, ei] 比区间 [sj, ej] 大(当然排除 si == sj && ei == ej 也就是 区间 相等的情况)2、 结构体排序之后,单独对原创 2020-05-15 12:58:17 · 119 阅读 · 0 评论 -
LA 4329 Ping pong (树状数组)
树状数组的典型应用, 参看 《算法笔记》 475页对于有n个数的数组 A(A[1] ~ A[n]), 对于每一个元素,求出序列中,它的左边比它小的数的个数本题要点:1、 题目见,《训练指南》 197 页2、 ans 要用 long long3、 输入的数组个数最大值为 20000, 每个 a[i] 的最大值为 100000,代码的 const int MaxN = 100010 //如果 const int MaxN = 20010, runtime error#include <cs原创 2020-05-15 01:47:44 · 111 阅读 · 0 评论