
树状数组
EnjoyingAC
bugger,写bug爱好者。
展开
-
树状数组_Rotate HDU2688
Problem Description Recently yifenfei face such a problem that give you millions of positive integers,tell how many pairs i and j that satisfy F[i] smaller than F[j] strictly when i is smaller than j原创 2017-05-19 11:51:34 · 259 阅读 · 0 评论 -
51nod 1107 斜率小于0的连线数量 (树状数组求逆序对、离散化)
题目链接 https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1107 题意 二维平面上N个点之间共有C(n,2)条连线。求这C(n,2)条线中斜率小于0的线的数量。 二维平面上的一个点,根据对应的X Y坐标可以表示为(X,Y)。例如:(2,3) (3,4) (1,5) (4,6),其中(1,5)同(2,3)(3,4...原创 2018-09-07 16:36:19 · 188 阅读 · 0 评论 -
2018多校赛第二场 Swaps and Inversions(树状数组求逆序对+离散化)
题意 给定一个数组a,每存在一个逆序对需要付出x的代价,每交换两个相邻的元素需要付出y的代价。 求最少付出代价。 解题 模拟一下交换操作,会发现将一个无序的数组变成一个不降序数组所需操作次数恰好是数组中逆序对存在的个数。所以最小代价就是min(x,y)*逆序对的个数。 求逆序对的个数可以用归并排序或者本文所用的树状数组(个人觉得比较好写)。 数组值的范围比较大,所以需要离散化。所谓离散...原创 2018-07-27 21:10:22 · 173 阅读 · 0 评论 -
树状数组维护单点修改、区间查询最大值
概述 用一个数组s来存放原始数组,用数组tree来存树状数组。 每次单点修改,都将受影响的s和tree的值修改,时间复杂度为O(logn). 每次区间查询[l,r]的最大值,如果区间长度大于lowbit(r)就一次性跨越一个lowbit(r)来查询,否则就一个点一个点的跨越。把查询过程看作砍柴: 砍一个点、砍一段区间(砍完至少剩一个点)、砍一段区间、砍一段区间…、 剩下的部分不足一段区间...原创 2018-05-29 18:22:29 · 1688 阅读 · 2 评论 -
模板总结——树链剖分
模板 //HDU3966 #include <cstdio> #include <algorithm> #include <cstring> #include <vector> #include &am原创 2018-05-22 10:40:30 · 164 阅读 · 0 评论 -
树状数组区间修改、区间查询&&区间修改、单点查询
区间修改 任务: 对于数组a[1],a[2],a[3],….a[n],给定区间[l,r]。 要求将a[l]~a[r]的值都加v。 解决: 引入一个差分数组b,b[i]=a[i]-a[i-1](默认a[0]=0)。 比如: a:1,2,3,4,5 b: 1,1,1,1,1 将区间[2,3]的值都加2 a: 1,4,5,4,5 b: 1,3,1,-1,1 对于a中区间[l,r...原创 2018-05-21 20:57:28 · 535 阅读 · 0 评论 -
模板总结——树状数组
一维树状数组 对于数组A[1…n],在O(logn)的时间内完成以下任务: (1)给A[i]的值加上一个数 (2)求A[1]+A[2]+…+A[i]的和 说明 lowbit(i)表示i在二进制表示法中最后一个’1‘所在位置的值,如lowbit(12)=4,因为12=1100(2)。 lowbit(i)=i&(-1)。 Tree[i]表示A[i]的前lowbit(i)个数的和,...原创 2018-05-08 22:02:48 · 311 阅读 · 0 评论 -
乒乓比赛(Ping pong)LA 4329 树状数组
题目链接 https://vjudge.net/problem/UVALive-4329 题意 一条大街上住着n个乒乓球爱好者,经常组织比赛切磋技术。每个人都有一个不同的技能值ai。每场比赛需要3个人:两名选手,一名裁判。他们有一个奇怪的规定,即裁判必须住在两名选手的中间,并且技能值也在两名选手之间。问一共能组织多少种比赛。 分析 枚举裁判从2号到N-1号,求出裁判的左边有多少人...原创 2018-04-04 21:19:04 · 835 阅读 · 0 评论 -
HDU-1754-I Hate It
线段树单点更新,区间查询问题。 树状数组单点更新,区间查询问题。原创 2017-12-22 11:07:33 · 179 阅读 · 0 评论 -
HDU-1166-敌兵布阵
## 题解 ## 线段树入门题,注意线段树要开四倍空间。 能用树状数组解决的线段树问题原创 2017-12-22 09:32:33 · 224 阅读 · 0 评论 -
树状数组_Ping pong
AC代码 #include #include using namespace std; #define lowbit(x) (x&-x) #define maxn 1000000 typedef long long ll; ll n,a[maxn],c[maxn],d[maxn],s1[maxn],s2[maxn],x[maxn]; ll sum(ll x) { ll r原创 2017-05-16 18:20:19 · 202 阅读 · 0 评论 -
Hiho #1488 : 排队接水(大批量区间查询+维护前缀和+查询一个值在区间的排名)
题目 Description 有n个小朋友需要接水,其中第i个小朋友接水需要ai分钟。 由于水龙头有限,小Hi需要知道如果为第l个到第r个小朋友分配一个水龙头,如何安排他们的接水顺序才能使得他们等待加接水的时间总和最小。 小Hi总共会有m次询问,你能帮助他解决这个问题吗? 假设3个小朋友接水的时间分别是2,3,4。如果他们依次接水,第一位小朋友等待加接水的时间是2,第二位小朋友是5,第三位小朋友是...原创 2019-04-07 11:09:36 · 389 阅读 · 0 评论