
树状数组
Self-Discipline
在校大学生
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Codeforces Round #510 (Div. 2) D. Petya and Array
题目:点击打开链接题意:给定一个数组,问有多少个不同的区间[l,r] (l<=r)使得区间和小于给定的数t。分析:先求个前缀和,则问题转化为所有满足sum[i]-sum[j]<t(j<=i)的区间个数,原式可变形为-sum[j]<t-sum[i],所以可以用一颗红黑树维护-sum[j](点击查看红黑树的库实现博客),然后用order_of_key查询t-sum[i]的r...原创 2018-10-30 23:06:20 · 235 阅读 · 0 评论 -
二维树状数组模板(单点更新,区间求和)(以HDU 2642为例)
题目:点击打开链接题意:输入B后输入坐标,表示对应的点的灯变亮,输入D后输入坐标表示对应的点灯灭,输入Q后输入一个矩形的左下角和右上角 输出矩形内亮着的等的个数,注意灯亮过不能再亮,灯关了不能再关,所以用数组标记,树状数组模板中元素下标均从1开始,题目从0开始所以加1。分析:二维树状数组单点更新,区间求和裸题。总结下板子。tree[x][y]记录的是右下角为(x, y),高为lowbit(x...原创 2018-10-30 09:32:45 · 387 阅读 · 0 评论 -
二维树状数组模板(区间更新,单点查询)(以POJ 2155为例)
题目:点击打开链接题意:n*n坐标图起初都为0,C:翻转左下和右上两个坐标围成的矩阵中所有点,Q:查询此点的0 1状态。分析:利用差分的思想,推广到二维,一维单点查询就是前缀和,即query(x)。区间修改先让s-n都加num,再让t+1-n减去num,即update(s, num),update(t+1, -num)。二维的单点查询变成二维就好了query(x, y)。区间修改update(...原创 2018-10-30 10:28:40 · 410 阅读 · 0 评论 -
树状数组求逆序数模板
以前求逆序数都是用的归并排序,现在发现树状数组求逆序数更简单,常数更小,留个板子,数值较大时需要离散化,用map实更简单,入门参考https://www.cnblogs.com/xiongmao-cpp/p/5043340.html。普通逆序数代码:#pragma comment(linker, "/STACK:102400000,102400000")#include<unor...原创 2018-10-31 00:03:23 · 363 阅读 · 0 评论 -
LA4329 Ping pong 乒乓比赛(树状数组与组合原理)
题意:一条大街上住着n个乒乓球爱好者,经常组织比赛切磋技术。每个人都有一个能力值a[i]。每场比赛需要三个人:两名选手,一名裁判。他们有个奇怪的约定,裁判必须住在两名选手之间,而裁判的能力值也必须在两名选手之间。问一共能组织多少种比赛。分析:《训练指南》P197,考虑第i个人,假设a1到ai-1中有ci个比ai小,那么就有(i-1)-ci个比ai大;同理,如果ai+1到an中有di个比ai小...原创 2019-07-09 09:40:34 · 825 阅读 · 0 评论 -
CH 4302 Intervavl(线段树维护区间gcd,区间加)
题意:给定一个长度为 N 的序列,M 个操作,支持区间加,区间查询最大公约数。分析:若是单点修改,区间最大公约数,则可以发现,每次修改最多改变 O(logn) 个答案,且 gcd 可以合并,因此可以直接在线段树上维护。但是对于区间加来说,无法在已知区间加了某一个数时快速计算出新的区间最大公约数,因此,最坏情况下复杂度可能退化到 O(n)。考虑辗转相除法的性质,gcd(x,y,z)=gcd(x,...原创 2019-07-06 22:37:41 · 544 阅读 · 0 评论 -
HDU6534 Chika and Friendly Pairs(离散化+树状数组+莫队)
题意:给出一个含有n个元素的数列a和k值,询问m次,每次询问给出L,R,输出[L,R]中friendly pair的总个数。friendly pair:对于数列位置i < j,有丨 a[i] - a[j] 丨<= k,则相当于一个friendly pair。分析:输入n个a[i],对 a[i]-k, a[i], a[i]+k进行离散化+去重,存到b数组中 ,预处理 a[i]-k, ...原创 2019-07-24 20:09:04 · 282 阅读 · 0 评论 -
HDU 5542 The Battle of Chibi(dp+树状数组)
题意:给出长度为n的序列,问这个序列中有多少个长度为m的单调递增子序列。分析:《算法竞赛进阶指南》P312-313。代码:#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int...原创 2019-07-22 21:52:46 · 207 阅读 · 0 评论