
树状数组
hohotiger
这个作者很懒,什么都没留下…
展开
-
Hihocoer 1336 - Matrix Sum 二维树状数组
题意给我们个n*n的矩阵 有m个操作让我们操作有两种 Add x y v对(x,y)上的元素加vSum x1 y1 x2 y2 对(x1,y1)为左上角(x2,y2)为右下角的矩阵求和并mod 1e9+7初始矩阵每个元素都是01 ≤ N ≤ 1000, 1 ≤ M ≤ 100000For each Add operation: 0 ≤ x < N, 0 ≤ y < N, -1000000原创 2017-10-20 17:16:02 · 239 阅读 · 0 评论 -
洛谷3368 - 树状数组 区间更新 单点查询
import java.io.BufferedInputStream;import java.util.Scanner;public class Main{ final static int maxn = 500100; static long[] tre = new long[maxn+5]; static long[] a = new long[maxn+5]; static i...原创 2018-05-04 12:04:28 · 287 阅读 · 0 评论 -
2018蓝桥杯模拟赛·青出于蓝而胜于蓝 DFS序+树状数组
武当派一共有 nnn 人,门派内 nnn 人按照武功高低进行排名,武功最高的人排名第 111,次高的人排名第 222,... 武功最低的人排名第 nnn。现在我们用武功的排名来给每个人标号,除了祖师爷,每个人都有一个师父,每个人可能有多个徒弟。我们知道,武当派人才辈出,连祖师爷的武功都只能排行到 ppp。也就是说徒弟的武功是可能超过师父的,所谓的青出于蓝胜于蓝。请你帮忙计算每个人的所有子弟(包括徒...原创 2018-03-24 23:30:19 · 543 阅读 · 0 评论 -
2018蓝桥模拟赛·天上的星星 暴力|二维树状数组
在一个星光摧残的夜晚,蒜头君一颗一颗的数这天上的星星。蒜头君给在天上巧妙的画了一个直角坐标系,让所有的星星都分布在第一象。天上有 nn 颗星星,他能知道每一颗星星的坐标和亮度。现在,蒜头君问自己 qq 次,每次他问自己每个矩形区域的星星的亮度和是多少(包含边界上的星星)。输入格式第一行输入一个整数 n(1 \le n \le 50000)n(1≤n≤50000) 表示星星的数量。接下里 nn 行,...原创 2018-03-24 11:50:07 · 265 阅读 · 0 评论 -
HDU 1566 Count the Colors 树状树组 区间更新 单点求值
#includeusing namespace std;const int lim = 100010;int n,c[lim];// 记录差分变化 void update(int a,int val){ while(a<=n){ c[a]+=val; a+=a&(-a); }}int get(int x){ int sum=0;原创 2018-01-18 03:06:41 · 228 阅读 · 0 评论 -
POJ 2299 - Ultra-QuickSort BIT
题意给我们一个序列 序列长度小于500000 每个元素 小于999999999 让我们只移动相邻的元素 最终使得他们移动到正好上升序的最小移动次数分析我们看 最小的移动次数其实是个幌子 因为你移动相邻的元素 大的元素你不论如何移动 就是要一个个移动到所有比他小的元素的后面 来看原序列 9 1 0 5 4 对于9由于它是最大的 那么他就要慢慢移动到最后一个 变成 1 0 5 4 9 那原创 2018-01-17 20:36:58 · 154 阅读 · 0 评论 -
POJ Star 树状数组
/*51 15 17 13 35 5*/#include<cstdio>#include<algorithm>using namespace std;typedef long long ll;int ans[15010];ll c[32005];void add(int x){ while(x<=32001){ c[x]++; x+=x原创 2018-01-21 23:18:56 · 227 阅读 · 0 评论 -
pat-1057 Stack 树状数组+二分查找
题意给我们一个n表示操作数量 然后三种操作 push和pop 还有求中位数的操作 让我们根据操作输出正确的解分析用sort排序做 或者 map标记法都会超时 考虑更快的方法 如何快速找到给定一串数的中位数 可以去索引 但是需要排序 题目中告诉我们每个元素都小于1e5 那么也就是说 上下界已知 那么求中位数 也就是求小于等于某个数的个数正好为所有数的一半 那么求小于等于某个数的个数原创 2017-12-08 22:09:18 · 281 阅读 · 0 评论 -
Codeforces Round #413 C-Fountains 树状数组
题意本题给我们给我们两种货币初始金额 每种货币分别对应能买不同种类的喷泉 每个喷泉有花费和价值 问我们如果单纯建造两个喷泉在限定金额内的最大值分析考虑一下 发现有三种情况 1 两个喷泉从coin中里建造 2 两个喷泉从diamond中建造 3 一边一个 4 输出0 表示找不出两个合法的可行解 第3,4种情况还好判断 就是在两边一遍选一个金额限度中价值最大的原创 2017-11-18 11:36:37 · 157 阅读 · 0 评论 -
树状数组的区间修改+查询
题意就是经典的两种操作 Q s e 表示查询s到e区间内的总和 C s e add 表示把s到e都加上一个add 区间内的元素大小1e9 区间长度和查询次数1e5分析: 这道题虽然是课裸的线段树区间修改+查询+延迟标记 但是繁杂的代码不如用实现简单的树状数组来做 首先看树状数组是用来求前缀和比较方便的一种数据结构 sum[i] = Sigma a[i] =Sum(bit[x])原创 2018-05-06 12:07:42 · 422 阅读 · 0 评论