
树状数组and线段树
树状数组and线段树
阿聊
愿我千帆过尽,归来仍是少年
展开
-
hdu 4911 Inversion and poj2299 [树状数组+离散化]
题目题意: 给你一串数字,然后给你最多进行k次交换(只能交换相邻的)问交换后的最小逆序对个数是多少。给你一个序列,每次只能交换相邻的位置,把他交换成一个递增序列所需要的最少步数 等于 整个序列的逆序对数。对于这个题目,我们只要求出个逆序对个数,然后输出逆序数 - k就行了,如果是负数输出0。之前做的这道题也是和逆序对有关,但是通过这道的代码改编一下,总是Runtime Error ...原创 2018-11-24 13:22:15 · 184 阅读 · 0 评论 -
hdu 4027 Can you answer these queries?[线段树]
题目题意:输入一个 :n 。(1<=n<<100000)输入n个数 (num<2^63)输入一个m :代表m个操作 (1<=m<<100000;)接下来m行,每行三个数a,b,c,如果a==0,执行操作1;如果a==1,执行操作2. 操作1:对[b,c]区间上的每一个数进行开平方操作操作2:对[b,c]区间求和...原创 2018-11-19 13:57:13 · 154 阅读 · 0 评论 -
树状数组之 ——区间更新,单点查询;区间更新,区间查询;
//修改区间,查询点#include<iostream>#include<cstring>using namespace std;const int maxn=100005;const int maxq=100005;int a[maxn];int b[maxn];int c[maxn];//a原数组,b是a的差分数组,c是b的树状数组int low...原创 2018-07-27 20:55:12 · 331 阅读 · 0 评论 -
差分数组
今天学习了一下差分数组,觉得好神奇啊。1.定义:对于已知有n个元素的离线数列d,我们可以建立记录它每项与前一项差值的差分数组f:显然,f[1]=d[1]-0=d[1];对于整数i∈[2,n],我们让f[i]=d[i]-d[i-1]。2.简单性质:(1)计算数列各项的值:观察d[2]=f[1]+f[2]=d[1]+d[2]-d[1]=d[2]可知,数列第i项的值是可以用差分数组的前i...原创 2018-07-27 17:34:19 · 466 阅读 · 0 评论 -
lowbit(x)
int Lowbit(int x){ return x&(-x);}lowbit当中x,-x,补码,反码,傻傻分不清楚。我们先看看两个二进制数相减的问题两个二进制数相减的相关问题两个二进制数相减的时候可以把符号括起来转化为加法,比如010-111,这时候就可以写成010+(-111),要将111转化为补码再相加,所以010+001=011即,在求 -x 的时候...原创 2018-07-27 09:59:09 · 601 阅读 · 0 评论 -
hihocode 1336 Matrix Sum 【二维树状数组】
题目两个操作: 1. Add x y value: Add value to the element Axy. (Subscripts starts from 02. Sum x1 y1 x2 y2: Return the sum of every element Axy for x1 ≤ x ≤ x2, y1 ≤ y ≤ y2.注意取模,因为value可能为负值 ...原创 2018-07-26 21:00:00 · 133 阅读 · 0 评论 -
hdu 2642 Stars 【二维树状数组】
题目题目大意:Yifenfei是一个浪漫的人,他喜欢数天上的星星。为了使问题变得更容易,我们假设天空是一个二维平面,上面的星星有时会亮,有时会发暗。最开始,没有明亮的星星在天空中,然后将给出一些信息,“B XY”,其中“B”代表明亮,x代表X坐标和Y代表Y坐标是指在(X,Y)的明星是光明的,而在“D XY”'D'的意思是灰暗的星星在(X , Y).当得到“Q X1 X2 Y1 Y2”的查询,你...原创 2018-07-26 15:48:51 · 204 阅读 · 0 评论 -
poj 2352 stars 【树状数组】
题目题意:按y递增的顺序给出n颗星星的坐标(y相等则x递增),每个星星的等级等于在它左边且在它下边(包括水平和垂直方向)的星星的数量,求出等级为0到n-1的星星分别有多少个。因为y递增的顺序给出,于是乎这道题跟 y 无关,在每次输入x的时候都去判断比x小,即在x之前的数有多少(ans)个,即星星的等级。然后更新num[ans]++ ( 存ans等级星星的个数num[ans]++ )....原创 2018-07-26 11:43:34 · 155 阅读 · 0 评论 -
hdu 1698 Just a Hook 【线段树+lazy】
题目写了一天的线段树,这道题主要说明一下sum是赋值的,不是累加的,并且在push_down的时候lazy也是赋值的。因可能对懒标记的理解还不是很透彻吧。#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int Max = 1e5+1...原创 2018-07-25 21:05:59 · 123 阅读 · 0 评论 -
线段树【单点更新,区间更新,区间查询,最值查询】
写了一下午的线段树,也算是做个总结吧。下面的区间更新写了两种,一种是没有用到懒操作一种是用了的。懒操作主要是在区间更新的时候用到,下面求区间和 and 区间最值都是要用到懒操作的#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int M...原创 2018-07-25 16:47:39 · 715 阅读 · 0 评论