![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树状数组
文章平均质量分 73
leolin_
这个作者很懒,什么都没留下…
展开
-
【树状数组求第k小+并查集】POJ 2985
http://poj.org/problem?id=2985树状数组已经够神奇了,原来它还可以求第k小的元素........orz,位运算V5!#define N (1<<20)int c[N],rank[N],fa[N];int n,m;void init(){ int i; for(i=1;i<N;i++){ c[i] = 0;原创 2012-03-10 10:01:13 · 1169 阅读 · 0 评论 -
【树状数组求第k小】POJ 2892
又一次用到树状数组求第k小,注意边界情况#define N 50005int c[N];int lowbit(int x){ return x&(-x);}void add(int x,int v){ while(x<N){ c[x]+=v; x+=lowbit(x); }}int sum(int x){ int an原创 2012-03-10 10:47:08 · 632 阅读 · 0 评论 -
【树状数组or归并排序求逆序数】HDU 1394
http://acm.hdu.edu.cn/showproblem.php?pid=1394 先说一下逆序数的概念:在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那末它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。逆序数为偶数的排列称为偶排列;逆序数为奇数的排列称为奇排列。如2431中,21,43,41,31是逆序,逆序数是4,为偶排原创 2011-05-17 13:22:00 · 868 阅读 · 0 评论 -
【二维树状数组】POJ 1195
求和的时候注意容斥原理ans = sum(x2,y2)-sum(x1-1,y2)-sum(x2,y1-1)+sum(x1-1,y1-1);#define N 1100int c[N][N];int lowbit(int x){ return x&(-x);}void add(int i,int j,int x){ int tmp; while(i<N){原创 2012-02-07 00:21:51 · 472 阅读 · 0 评论 -
【二维树状数组】HDU 1892
注意树状数组的初始化,c[i][j] = lowbit(i)*lowbit(j)与add(i,j,1)等价!因为树状数组的lowbit作用是提取出x的最低位1.#define N 1100int c[N][N];int g[N][N];int lowbit(int x){ return x&(-x);}void add(int i,int j,int x){ in原创 2012-02-07 01:36:26 · 838 阅读 · 0 评论 -
【树状数组】hdu 2852
对点的操作,最好就用树状数组!#include #include //#include #include #include #include #include #include #include #include #include #include #原创 2011-08-22 22:43:51 · 404 阅读 · 0 评论 -
【树状数组】The 36th ACM/ICPC Asia Regional Beijing Site Online Contest - G Panda
http://cnc.boj.me/onlinejudge/newoj/showProblem/show_problem.php?problem_id=217其他人都说用线段树,可是自己敲着敲着就没想法,只好转向树状数组,发现可以实现,貌似比别人的线段树快。 方法:一原创 2011-09-19 01:14:15 · 544 阅读 · 0 评论 -
【树状数组】hdu 4000
给出一个1~N的序列,问有多少组x方法:树状数组,先求出xyz+xzy的个数,很简单,算出比ai大的个数,比ai小的个数,这个用树状数组实现,开始想的时候是倒过来建树的,即下标n~1顺序,发现没必要,顺序也可以,求出比ai小的个数p,然后草稿纸算算,算出比ai大的个数是(n-原创 2011-09-07 14:06:37 · 475 阅读 · 0 评论 -
hdu 1166 线段树/树状数组
http://acm.hdu.edu.cn/showproblem.php?pid=1166***********************************************************本人做的第一道线段树的题,纪念一下吧*****************原创 2011-05-05 16:12:00 · 457 阅读 · 0 评论 -
ural 1028【树状数组】
http://acm.timus.ru/problem.aspx?space=1&num=1028郁闷啊!!!竟然想不到用树状数组。。。真水~#include #include #include #include #include #include #原创 2011-08-02 04:17:23 · 742 阅读 · 0 评论 -
zoj 3279【树状数组+二分】
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3618很蛋疼,用cin输入字母竟然TLE!!!#include#include#include#include#include#include#in原创 2011-07-26 16:33:11 · 532 阅读 · 0 评论 -
poj 1990【树状数组】
<br />http://poj.org/problem?id=1990<br />这题调试了n久!!!就是因为变量名有点乱,自己也乱了。<br />#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;int num_small[20010],sum_small[20010];int Max;struct node{ int v原创 2011-05-18 09:33:00 · 490 阅读 · 0 评论 -
hdu 3015【树状数组】
http://acm.hdu.edu.cn/showproblem.php?pid=3015犯一些低级错误。。。例如忘了return,注意求大和求小的式子---【ans+=t[i].ch*(num_min*t[i].cx-sum_min + sum_x-sum_min-(i-num_min-1)*t[i].cx);//第i个与其他的差的和】/************hdu3015*****************/#include#include#include#includeusing原创 2011-05-19 01:27:00 · 691 阅读 · 0 评论 -
hdu 2492【树状数组】
<br /> http://acm.hdu.edu.cn/showproblem.php?pid=2492<br />/*有一条街上的人进行乒乓球比赛。 每两个人可以进行比赛的前提是能够找到除了他们之外的一个裁判住在他们中间, <br />并且, 裁判的等级不能同时低于他们两个人,或者同时高于他们两个人。 <br />思路: 用两次树状数组;枚举裁判位置, 用树状数组求出 左边比他小的数有多少个, <br />求出左边比他大的数有多少个, 再用一次树状数组 求出右边比他小的数 有多少个, <br原创 2011-05-17 00:19:00 · 673 阅读 · 0 评论 -
数据结构之树状数组
1、概述树状数组(binary indexed tree),是一种设计新颖的数组结构,它能够高效地获取数组中连续n个数的和。概括说,树状数组通常用于解决以下问题:数组{a}中的元素可能不断地被修改,怎样才能快速地获取连续几个数的和?2、树状数组基本操作传统数组(共n个元素)的元素修改和连续元素求和的复杂度分别为O(1)和O(n)。树状数组通过将线性结构转换成伪树状结构(线性结构只能逐个原创 2011-05-15 21:34:00 · 738 阅读 · 0 评论