![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构 树状数组
文章平均质量分 76
yuhong_liu
这个作者很懒,什么都没留下…
展开
-
HDU-3887-Counting Offspring-dfs序+树状数组
http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=21535题目大意: 给你一颗n个节点的数,对于每个节点i,问你每个节点的子树中有多少个节点序列数小于i,求f[i]。先跑一遍dfs,得到dfs序,树状数组初始化为空然后我们从 节点编号1遍历到n对于每个节点编号i,查询 【in[原创 2016-01-22 15:32:25 · 720 阅读 · 0 评论 -
hdu-5869 Different GCD Subarray Query gcd预处理 + 树状数组 + 离线
http://acm.hdu.edu.cn/showproblem.php?pid=5869题意: 长度n的序列, m个询问区间[L, R], 问区间内的所有子段的不同GCD值有多少种.n,m又学到一个套路,预处理一个gcd表,固定右端点,向左延伸有多少个不同的gcd值以及他们出现的位置。每固定一个端点的话,log下降的很快,不会超过logA个。要是预原创 2016-09-14 19:52:27 · 283 阅读 · 0 评论 -
cf#348-E. Little Artem and Time Machine-树状数组+map节点(动态开点树状数组)
http://codeforces.com/contest/669/problem/E题意:题意:有三个操作 1 x y,在第x秒插入一个y 2 x y,在第x秒移走一个y 3 x y, 问第x秒有多少个y这个操作3可以问之前的时间,也可以问未来的时间。。。不太好离线搞直接对数值y离散化,对于每个y建一个线段树/树状原创 2016-08-21 18:51:11 · 1131 阅读 · 0 评论 -
UVALive 4730 -树状数组+带权并查集
题意:有T组测试数据,每组数据的N表示有N个城市,接下来的N行里每行给出每个城市的坐标(0(1)"road A B",表示将城市A和城市B通过一条道路连接,如果A和B原来属于不同的城市群,经过这个操作,A和B就在一个城市群里了,保证每条道路不会和其他道路相交(除了端点A和B)。(2)"line C",表示查询当穿过y=C的直线,有多少个城市群、这几个城市群一共有多少个城市。以C原创 2016-08-18 23:19:03 · 400 阅读 · 0 评论 -
HDU 5044-tree-树链剖分+树状数组
裸的树链剖分,似乎数据有点大。用线段树维护会T,加个读入挂,树状数组能怼过去。。。似乎连树状数组都没必要了。直接用数组也可做...#include #include #include #include #include #include #include #include #include #include #include #include using原创 2016-08-18 19:22:18 · 568 阅读 · 0 评论 -
HDU 4417-树状数组求区间rank查询/主席树区间rank查询
主席树做法:离散化下标,直接求累计区间里小于等于query_k的个数 ,这题似乎跑得时间都差不多。#include #include #include #include #include #include #include #include #include #include using namespace std;const int MAXNN=100005;原创 2016-07-30 02:20:03 · 330 阅读 · 0 评论 -
HDU 4358-I - Boring counting-dfs序+离线+树状数组/线段树
http://acm.hdu.edu.cn/showproblem.php?pid=4358题意:给你一颗树,n个节点,每个有其权值。给一个k。q次询问,每次询问 以x为根节点的子树里,有多少种权值恰好出现次数为k。我们先求个dfs序,把树型结构转为线性数组。那么题目变成q次查询,每次查询区间L【x】,R【x】之间有多少个权值,出现的次数恰好为k而本原创 2016-04-23 10:26:34 · 514 阅读 · 0 评论 -
求第k大连续区间和/第k大子序列和 - 二分+树状数组+前缀和(或主席树+堆)
给你n,再给你n个数,最后给一个k求出这个序列的第k大连续区间和;N(1ai(1K(1思路:预处理前缀和。并将其离散化(去重)。二分答案,然后每次判断中,遍历前缀和Bi,然后查找有多少个jX,也就是有多少个子序列的和是大于X的,即使求有多少个Bj小于【Bi-X】,这部分查询我们可以用树状数组实现,方法类似于树状数组求逆序对。 查询方法简要说一下,原创 2016-03-19 17:32:10 · 3767 阅读 · 0 评论 -
cf#ECR10-D. Nested Segments-树状数组+二分
http://codeforces.com/contest/652/problem/D题意,给n个区间(端点保证不重复)输出每个区间包含了多少个区间先存起所有区间的左右端点,并依次对应编号然后把左右端点 分别从小到大排序并开一个树状数组,每个点对应着Yi,初始化值全为1从小到大遍历左端点,对于X1,找到其原始编号id,然后再找出对应的Y然后在原创 2016-03-26 00:09:34 · 418 阅读 · 0 评论 -
cf#10-B - Cinema Cashier-暴力+树状数组
http://codeforces.com/contest/10/problem/B题目大意:n波人去k*k的电影院看电影。要尽量往中间坐,往前坐。没想到什么好的办法。。xjb暴力贪心,用个树状数组辅助一下查询时减轻复杂度。。复杂度 n*k*k*logk.........n=1000,k=100#include #include #include原创 2016-01-30 22:32:18 · 637 阅读 · 0 评论 -
D - Data Mining-Gym 100496D-离线处理+树状数组+离散化
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=193991//去重离散化+离线处理思想//题意是 【取1,N】数组中a为起点的后缀数组,映射为字典序最小的序列,求该序列第b个元素的映射//Gym 100496D 其实就是求位置[a,b]中,b位置对应的元素在区间最靠左的位置 前面有多少种不同的原创 2015-08-13 01:16:54 · 650 阅读 · 0 评论 -
LA-4329 Ping pong - treap (排名树)/树状数组求排名
题目https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=26&problem=2330&mosmsg=Submission+received+with+ID+1779597题意: 一条大街上住着n个乒乓球爱好者,经常组织比赛切原创 2015-09-05 01:00:00 · 625 阅读 · 0 评论 -
CF#The Union of k-Segments -离散化+树状数组
真是写得太挫了。。离散化+树状数组 3S。。。#include #include #include #include #include #include #include #include #include #include using namespace std;struct node{ int l,r; node(){} n原创 2016-01-06 19:57:56 · 438 阅读 · 0 评论 -
poj3321-Apple Tree-dfs序+树状数组
http://poj.org/problem?id=3321给你一颗树,最初每个节点上都有一个苹果,有两种操作:修改(即修改某一个节点值为0或1)和查询(查询某一个节点的【子树】上有多少个苹果) 这个在树上跑一遍dfs,得到树的dfs序,每个节点管辖的区间就是in[x] - out[x] 这个区间上的节点都是 节点x的子节点,其中in[x]是x自身那么接下来的对原创 2016-01-22 14:57:06 · 590 阅读 · 0 评论 -
BZOJ 3529: [Sdoi2014]数表 数学 + 莫比乌斯反演 + 取模优化 + 线性筛 + 树状数组
http://www.lydsy.com/JudgeOnline/problem.php?id=3529Description 有一张N×m的数表,其第i行第j列(1 能同时整除i和j的所有自然数之和。给定a,计算数表中不大于a的数之和。Input 输入包含多组数据。 输入的第一行一个整数Q表示测试点内的数据组数,接下来Q行,每行三原创 2016-09-07 22:18:24 · 726 阅读 · 0 评论