
树状数组
Viscu
勤能补拙。
展开
-
树状数组
#include<iostream>#include<cstring>#include<cstdlib>#include<algorithm>#include<cctype>#include<cmath>#include<ctime>#include<string>#include<stack>#include<deque>#include<queue>#include<lis原创 2016-09-02 20:39:59 · 647 阅读 · 0 评论 -
BZOJ1878: [SDOI2009]HH的项链(树状数组+离线)
DescriptionHH有一串由各种漂亮的贝壳组成的项链。HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH不断地收集新的贝壳,因此, 他的项链变得越来越长。有一天,他突然提出了一个问题:某一段贝壳中,包含了多少种不同 的贝壳?这个问题很难回答。。。因为项链实在是太长了。于是,他只好求助睿智的你,来解 决这个问题。Input第一行:一个整数N,表原创 2016-10-19 22:03:56 · 499 阅读 · 0 评论 -
HDU5892 Resident Evil(二维树状数组+状态压缩)
Resident EvilTime Limit: 6000/3000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others)Total Submission(s): 633 Accepted Submission(s): 145Problem DescriptionThe Umbrella Company has d原创 2016-10-18 00:25:23 · 825 阅读 · 3 评论 -
HDU3584 Cube(三维树状区间更新+位运算)
CubeTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Submission(s): 1983 Accepted Submission(s): 1033Problem DescriptionGiven an N*N*N cube A, whose eleme原创 2016-10-18 19:43:22 · 388 阅读 · 0 评论 -
HDU1559 最大子矩阵(二维树状数组)
最大子矩阵Problem Description给你一个m×n的整数矩阵,在上面找一个x×y的子矩阵,使子矩阵中所有元素的和最大。Input输入数据的第一行为一个正整数T,表示有T组测试数据。每一组测试数据的第一行为四个正整数m,n,x,y(0<m,n<1000 AND 0<x<=m AND 0<y<=n),表示给定的矩形有m行n列。接下来这个矩阵,有m行,每行有n个不大于1000的正整数。原创 2016-10-03 23:22:59 · 419 阅读 · 0 评论 -
二维树状状数(专题学习)
二维树状数组,顾明思义,其实就是树状数组的二维形式。主要运用:1.单点更新2.子矩阵求和其中getSum求的是矩阵从(1,1)到(x,y)这个矩阵的和,如果我们需要求某个子矩阵的和,那么res=getSum(x2,y2)+getSum(x1-1,y1-1)-getSum(x2,y1-1)-getSum(x1-1,y2)注意矩阵的赋值是数组从1开始的,由于他是二维的树状数组,和一维的差不多原创 2016-10-03 22:50:10 · 385 阅读 · 0 评论 -
51nod 逆序数[NYOJ 逆序数](离散化+树状数组)
在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。 如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序数是4。给出一个整数序列,求该序列的逆序数。 Input 第1行:N,N为序列的长度(n <= 50000) 第2 - N + 1行:序列中的元素(0 <= A[i] <= 10^9)原创 2016-09-03 00:53:29 · 523 阅读 · 0 评论 -
BZOJ Preprefix sum
Input 第一行给出两个整数N,M。分别表示序列长度和操作个数 接下来一行有N个数,即给定的序列a1,a2,….an 接下来M行,每行对应一个操作,格式见题目描述 Output 对于每个询问操作,输出一行,表示所询问的SSi的值。 Sample Input 5 3 1 2 3 4 5 Query 5 Modify 3 2 Query 5 Sample Output 35原创 2016-09-04 23:10:55 · 1061 阅读 · 0 评论 -
NYOJ 士兵杀敌系列
int read(){ int x(0),f(1); char ch=getchar(); while (ch<'0'||ch>'9') {if (ch=='-') f=-1;ch=getchar();} while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return x*f;}加速外挂,因为只有输入功能,所以加速外挂可原创 2016-09-07 18:38:34 · 1174 阅读 · 0 评论 -
leetcode 307. 区域和检索 - 数组可修改 树状数组
给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。 update(i, val) 函数可以通过将下标为 i 的数值更新为 val,从而对数列进行修改。 示例: Given nums = [1, 3, 5] sumRange(0, 2) -> 9 update(1, 2) sumRan...原创 2018-09-12 01:49:06 · 797 阅读 · 0 评论