树状数组
HAI__嗨I起来
IT
展开
-
HDU 5792 World is Exploding 2016多校赛第五场 树状数组+容斥原理
点击打开链接 找出有多少个四元组(a,b,c,d)满足a≠b≠c≠d,a Ad. 思路: 计算像a,b这样上升的有sm对,像c,d这样下降的有bg对,ans=la*lb。这样是有重复的,重复的就是a与c重合,a与d重合,b与c重合,b与d重合这四种情况。那么减去这四种情况就ok了。可以用树状数组预处理出每一位i的左边比a[i]大的有多少Lb[],小的有多少Ls[],右边比a[i]大的有原创 2016-08-03 21:00:41 · 336 阅读 · 0 评论 -
POJ 2352 Stars 树状数组 与 1195二维树状数组
点击打开链接 求每个小星星左下角(可以是正下方或正左边)的星星的个数。坐标按照Y升序,Y相同X升序的顺序给出(输入的形式) 由于y轴已经排好序,可以按照x坐标建立一维树状数组 #include #include #include #include #include #include #include #define LL long long using namespace std;原创 2016-08-03 19:30:10 · 192 阅读 · 0 评论 -
POJ 3321Apple Tree 树状数组变形
点击打开链接 你一颗树,最初每个节点上都有一个苹果,有两种操作:修改(即修改某一个节点,修改时这一个节点苹果从有到无,或从无到有)和查询(查询某一个节点他的子树上有多少个苹果)。 思路: 树状数组维护的是区间问题,现在如何把这道题转换为区间问题是难点,如何转换呢? 我们想要查询一个节点及其分支上有多少个节点的话,就需要重新,进行编号,使得一个点及其分支上的节点是连续的一个区间,这样就可原创 2016-08-04 22:52:11 · 292 阅读 · 0 评论 -
HDU 5877 dfs+离散化+树状数组(树上维护)
题意: 给出一棵n个结点的树和一个数k, 每个节点上有权值, 问有多少个有序对(u,v) (u,v)满足u是v的祖先, a[u] * a[v] 思路: 首先这是在树上进行操作,然后就是找满足祖先关系,并且a[u] * a[v] 找点的a[u] * a[v] 然后这就转化成找树上点有多少个小于某个值得问题了,对于这种问题要转换成树状数组进行维护,时间复杂度就变原创 2016-09-12 19:29:29 · 431 阅读 · 0 评论 -
HDU 5869 求区间中不同连续序列的gcd的个数(树状数组)
题意: 长度n的序列, m个询问区间[L, R], 问区间内的所有子段的不同GCD值有多少种. 思路: 区间GCD收敛的很快,所以直接暴力预处理出到每个数字截至的后缀串有哪些GCD以及它们的位置,就是每个数字向前看有哪些GCD出现,这个数量是很少的。 1.枚举区间的右坐标,然后枚举出所有的以这个为右坐标为区间左坐标。 2.并求出他们这个连续区间的gcd,去重,(即重复的不再记录) 3.原创 2016-09-13 20:29:46 · 1777 阅读 · 0 评论