树状数组
文章平均质量分 77
wmn_wmn
这个作者很懒,什么都没留下…
展开
-
杭电oj 1541 树状数组
暑假时和xd讨论过这道题,当时迷迷糊糊的做了出来,昨天做专题练习时,怎么也想不出来怎么和树状数组联系起来。昨天想了有几个小时,今天又想了想,终于想了出来。自己感觉这是一道树状数组的好题,也是有一定难度的。 题目: Astronomers often examine s原创 2011-09-28 11:25:36 · 1345 阅读 · 0 评论 -
HDU 2227 Find the nondecreasing subsequences 树状数组
来源:http://acm.hdu.edu.cn/showproblem.php?pid=2227 题意:给一个集合,问能求出多少个非降序的集合。 思路:如果数据范围小的话,可以用(n*n)的方法,即两重循环的方法。因为n最大为100000,所以不行。用sum(i)表示到第i个数时有多少个非降集合,则sum(i) =sum( sum(j)),(num[j] 代码: #include #原创 2012-10-01 14:52:38 · 3003 阅读 · 0 评论 -
HDU 3887 Counting Offspring 树状数组 + 栈模拟dfs
来源:http://acm.hdu.edu.cn/showproblem.php?pid=3887 题意:给一棵树,树的根结点给出,边也给出,现在问每个结点下面有多少个结点的编号比该结点的编号小。 思路:这道题就是POJ 3321 和 HDU 4417的结合。首先用dfs遍历树,对每个结点对应一个区间,然后就是求一个区间内比一个数小的数有多少个,和HDU 4417 一样。不同的是这道题目df原创 2012-10-01 21:19:12 · 3025 阅读 · 0 评论 -
HDU 3450 && HDU 2836 树状数组
来源:http://acm.hdu.edu.cn/showproblem.php?pid=3450 题意:给一些数,问有多少集合,满足相邻的数之间的差的绝对值小于d。 思路:树状数组,找出上界和下界后,和HDU 2227 一样。找上界和下界的方法为二分。 代码: #include #include #include #include using namespace std; co原创 2012-10-03 15:36:36 · 3182 阅读 · 0 评论 -
HDU 4267 A Simple Problem with Integers 树状数组
来源:http://acm.hdu.edu.cn/showproblem.php?pid=4267 题意:给一些数,有两种操作,一种是在[a,b] 区间内,对(i - a)% k == 0 的加value,另一种操作是询问某个位置的值。 思路:很容易想到这是一个插线问点的问题,但是在更新值 的时候和平常的更新不同,这道题又增加了一个限制条件。因为k比较小( 代码: #include #i原创 2012-10-04 11:16:36 · 4334 阅读 · 1 评论 -
POJ 3067 Japan 树状数组
来源:http://poj.org/problem?id=3067 题意:两边都有一些城市,从上到下排列,有些城市之间有路,路与路之间会形成交点,问最后会形成多少个交点。 思路:首先可以把有联系的城市转化成平面上的点,比如说1 和 2 之间有一条路,则代表有一个点,坐标为(1,2)。转化之后可以用树状数组做,可以发现最后的结果其实和所给的顺序无关,因此我们可以按y轴从小到大排序,若y轴相等,则原创 2012-09-15 11:22:01 · 713 阅读 · 0 评论 -
POJ 2181 Cows 树状数组
来源:http://poj.org/problem?id=2481 题意:有一些牛,这些牛有一个属性值,这个属性值的范围给出,为si,ei,若si = ej && ei - si > ej - sj,则称牛i是比牛j强壮的。问对于每只牛,有多少只牛比其强壮。 思路:树状数组,可以对e按升序排序,这样在j前面的e值一定比j的e值大,因此只需要考虑s值即可,就可以用树状数组了。这道题也从根本上改变原创 2012-09-17 14:04:45 · 664 阅读 · 0 评论 -
POJ 3321 Apple Tree 树状数组
来源:http://poj.org/problem?id=3321 题意:有一棵树,树上有一些叉,每个叉上刚开始都有一个苹果,对每个叉可以有两种操作,若刚开始有苹果,则变为没苹果,若刚开始没苹果,则变为有一个苹果。有多次操作,有多次询问,对于每次询问,回答该结点以及该结点以上有多少个苹果。 思路:树状数组的好题。首先可以dfs树,为每个结点映射一个区间,然后就是树状数组的裸题了。树状数组不仅可原创 2012-09-18 08:54:18 · 1119 阅读 · 0 评论 -
HDU 2492 Ping pong 树状数组求逆序数
来源:http://acm.hdu.edu.cn/showproblem.php?pid=2492 题意:给你一些不同数,求满足a 思路:用树状数组求逆序数,和CF上的一道题目非常像,http://blog.csdn.net/wmn_wmn/article/details/7778772 代码: #include #include #include using namespac原创 2012-09-19 10:06:01 · 840 阅读 · 0 评论 -
POJ 1195 Mobile phones 二维树状数组
来源:http://poj.org/problem?id=1195 题意:有一个N * N广场,广场里面有一些手机,某个格子是可以改变的,增加或者减少,问一个小矩阵内有多少个手机。 思路 :裸的二维树状数组。 代码: #include #include #include using namespace std; typedef long long LL; const int N原创 2012-09-18 11:29:30 · 1056 阅读 · 1 评论 -
HDU 3584 Cube 三维树状数组
来源:http://acm.hdu.edu.cn/showproblem.php?pid=3584 题意:有一个立方体,初始每个格子都为0,可以对格子操作,把0变为1,把1变为0,最后询问某个格子最后的值 是多少。 思路:三维树状数组的应用,插线问点。 代码: #include #include #include using namespace std; const int N原创 2012-09-21 08:51:35 · 1299 阅读 · 0 评论 -
HDU 4000 Fruit Ninja 树状数组
来源:http://acm.hdu.edu.cn/showproblem.php?pid=4000 题意:给你一个1到n的排列,让求满足posx 思路:树状数组的题目。首先我们可以得到所有满足题目条件的组数为x 代码: #include #include #include using namespace std; const int N = 100010; const __in原创 2012-09-30 10:00:53 · 2991 阅读 · 0 评论 -
HDU 3015 Disharmony Trees 树状数组
来源:http://acm.hdu.edu.cn/showproblem.php?pid=3015 题意:有一些树,这些树的高度和位置给出。现在高度和位置都按从小到大排序,对应一个新的rank,任意两棵树的值为min(高度的rank) * abs(位置差的绝对值)。问所有任意两棵树的值的和是多少。 思路:首先对高度和位置分别离散,接下来就是树状数组 了,和poj 1990是一样的。 代码:原创 2012-09-29 21:38:08 · 1449 阅读 · 0 评论 -
HDU 4417 Super Mario 树状数组
来源:http://acm.hdu.edu.cn/showproblem.php?pid=4417 题意:给一些数,数中有重复的。还有一些询问,问的是[L,R] 区间内有多少个数小于h,有多次询问。 思路:普通方法的话肯定会超时,题目问[L,R]区间内小于h的数有多少个,则可以算出cal(R) 和 cal(L - 1), 两者相减就是答案。这类问题和求逆序数的问题非常类似,即求一个数前面有原创 2012-09-30 16:10:03 · 5731 阅读 · 0 评论 -
杭电 OJ Color the ball 树状数组
一道简单的树状数组的题,不过用cin和cout TLE,用printf和scanf 竟然只用了600多ms,这倒是让我意外了。。。题目: N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a Input原创 2011-09-28 14:27:06 · 995 阅读 · 0 评论 -
杭电OJ 敌兵布阵 树状数组
是一道简单的树状数组的题,,是一道简单题。。。。。题目: C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先原创 2011-09-28 12:57:49 · 895 阅读 · 0 评论 -
hdu 1394 树状数组求逆序数
以前用过线段树求逆序数,这次想用树状数组试一下,悲催的是想了好久才想明白。。。。看来对树状数组还是不够了解啊。纠结。。。。题目: Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others) Memo原创 2011-10-12 11:09:04 · 1286 阅读 · 0 评论 -
hduoj Stars 二维树状数组
话说这道题是一道不折不扣的二维树状数组的水题,可是对于我这种菜鸟中的vip来说,却还是纠结了很久很久。。留下做个模板吧。。。。。 题目: Yifenfei is a romantic guy and he likes to count the stars in the原创 2011-09-30 18:46:18 · 970 阅读 · 0 评论 -
杭电 2838 牛叉的树状数组
话说这道题要用的三个树状数组,不容易啊。我刚开始想的时候想明白了用公式怎么算,却想不出来怎么转化到树状数组上,总感觉有些地方实现不了,原来竟然是用三个树状数组。。。这让只写过一个树状数组的孩纸情何以堪? 具体来说,有一个num数组,里面记录的是插入a[i]后,在a[i]之前插入且比a[i]小的数的个数;还有一个totalsum数组,记录的是插入第i个数后,前i-1个数的总和;原创 2012-02-24 08:09:02 · 973 阅读 · 0 评论 -
杭电 2852 树状数组+二分
题目: KiKi's K-Number Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1314 Accepted Submission(s): 565 Problem Description Fo原创 2012-02-17 13:59:05 · 931 阅读 · 0 评论 -
NYOJ 522 裸的树状数组
又是一道水题,,话说这次月赛水题真的很多很多,貌似比赛时写出来的题都是水题。。。看来,水平也就能水一下题而已。。。。不过这道题比赛时还是坑了不少人,很多人在处理边界问题0的时候没有注意,都TLE了,,当时我也TLE了一次,后来仔细想了想,改过后就ac了。相比那些一直TLE到最后的孩纸来说,我算是幸运了。不过,这道题难度有点高了,除了边界问题外,就是道裸的树状数组,没什么难度的。题目:原创 2012-04-24 08:29:26 · 1102 阅读 · 0 评论 -
Enemy is weak 树状数组
来源:http://codeforces.com/problemset/problem/61/E 题意:给你一些数,让求满足i num[j] > num[k]的序列的个数,而且已知每个数都是不同的。 思路:这是CF上的一道题,由题意很容易联想到逆序数。实际上就是这样,这道题就是和逆序数有关。假如所给的序列为10 8 3 1,那么我们求出每个数的后面比其小的有多少个,对于该序列来说的话为3,2原创 2012-07-24 10:47:57 · 1337 阅读 · 0 评论 -
POJ 1990 MooFest 树状数组
来源:http://poj.org/problem?id=1990 题意:有一些牛,这些牛有一个听力值v[i]和一个坐标值pos[i],任意两只牛交流所需要的值为max(v[i],v[j]) * abs(pos[i] - pos[j]),求任意两只牛之间交流所需要的值总和为多少。 思路:如果暴力的话,因为n 太大(200000),所以肯定超时,所以我们需要想其它的方法。考虑将牛按v值从小到大排原创 2012-09-27 21:50:51 · 857 阅读 · 0 评论 -
POJ 2029 Get Many Persimmon Trees 二维树状数组
来源:http://poj.org/problem?id=2029 题意:有一个矩阵,矩阵里面有一些位置有树,矩阵的宽和高都给了。现在给你一个w*h的小矩阵,问用这个小矩阵最多能得到多少树。 思路:暴力枚举的话肯定超时,所以应该想其它的方法。很容易转化到二维树状数组上,然后就是裸的二维树状数组了,一个插点问线的问题。 代码: #include #include #include #i原创 2012-09-28 09:11:56 · 920 阅读 · 0 评论 -
HDU 3874 Necklace 树状数组的应用
来源:http://acm.hdu.edu.cn/showproblem.php?pid=3874 题意:有一些数,这些数中有重复的,问从[L,R]区间的和是多少,重复的数只能算一次。 思路:因为有多次询问,所以暴力的话肯定超时,又因为是区间求和问题,所以可以考虑用树状数组求。树状数组可以解决没有重复数的情况,因此这道题我们可以特殊处理一下。首先我们可以把所有的询问都存起来,然后对询问按右端点原创 2012-09-24 09:07:11 · 1269 阅读 · 0 评论