数据结构-树状数组
tzb592825420
这个作者很懒,什么都没留下…
展开
-
hdu4777 Rabbit Kingdom 离线树状数组 求询问区间内的区间数
题意:询问区间内有多少个数与区间中其他的数都互质分析:易得,一个区间内的数的个数减去,与其他数不互质的数即可——即离当前数i左边最近的不互质的数的位置(设为L[i])和右边最近的不互质的数的位置(设为R[i])有一个在区间[L,R]内。那么问题就变成统计:1.区间[L,R]中有多少个数的L[i]或R[i]在区间[L,R]内。2.多少个数的L[i]且R[i]在区间[L,R]内。对于每个询问,答案原创 2015-10-14 11:43:44 · 340 阅读 · 0 评论 -
hdu5196 DZY Loves Inversions 思路,计数
题意:一个数列,给出一些区间,计算这个区间有多少子区间逆序对数为k。分析:直接计算k不好算,把问题转化为 最后所求即为sum(min(r1i,r)-l+1) (i>=l&&i#include#include#include#include#include#include#include#include#include#include#include#inclu原创 2015-10-06 14:45:47 · 299 阅读 · 0 评论 -
hdu5156 Harry and Christmas tree 离线树状数组,dfs序
题意:一棵树上每个节点有一些不同颜色的礼物,求每棵子树礼物的颜色数。parse:dfs序处理后相当于询问一些区间的颜色数,树状数组离线解决,详情见代码,很巧妙。#include#include#include#include#include#include#include#include#include#include#include#include#include原创 2015-09-01 22:42:51 · 357 阅读 · 0 评论 -
北航校赛 这样还真是令人高兴啊
点击打开链接题意:一个环上有n的一个排列,可右移,即最右边的元素移到最左边,有m个询问,求逆序对数。分析:此题不难,树状数组把n次右移的逆序对数都求出来即可。注意:当询问次数非常多时,要用scanf和printf,否则会超时;#include#include#include#include#include#include#include#include#includ原创 2014-12-23 15:28:50 · 948 阅读 · 0 评论 -
二维,三维树状数组模板
二维树状数组,update(x,y)是更新(x,y),然后维护(x,y)右下角的矩阵,sum(x,y)是求(1,1) 到 (x ,y)这个矩阵内所有元素的和。当然也可以用来求任意矩阵的值。例如求矩阵(x1,y1) 到 (x2,y2)的值,那么直接sum (x2, y2) – sum(x1 – 1 ,y2) – sum(x2 ,y1 - 1) + sum (x1 – 1 ,y1 - 1) 即可。原创 2014-07-30 11:06:25 · 500 阅读 · 0 评论 -
poj2299 Ultra-QuickSort(树状数组求逆序数,离散化)
所谓数列的逆序数就是一个值sum,sum=b[0]+b[1]+...+b[n-1]。这里假设数列为a,其中b[i]表示在数列中在a[i]后面并且比a[i]小的数的个数。比如有数列 2 8 0 3的逆序数就是1+2+0+0=3。转载 2014-07-30 11:12:24 · 547 阅读 · 0 评论 -
hdu3874 离线树状数组
询问区间内不同的数的和。将询问按照r排序,用last记录每个值上次出现的位置,若重复出现,减去原来的加上现在的。#include#include#include#include#include#include#include#include#include#include#define fi first#define se second#define pii pai原创 2015-10-14 11:35:34 · 333 阅读 · 0 评论