poj2352 Stars (第一道树状数组

原创 2012年03月25日 22:51:10

树状数组详解

  通过这道题,我对树状数组的理解:

  树状数组通过一种类似与二叉树的结构,使得任意连续段的求和操作的时间复杂度为O(log(N)).但是付出的代价是,对某一个元素做修改的时候的时间复杂度不再是O(1),而是O(log(N)).

  一般数组求某一连续段的和的时间复杂度为O(N),而树状数组为O(log(N)). 因此,树状数组适合于,需要大量经常计算某连续段的和的情景。

 
#include<stdio.h>
#include<ctype.h>

#define	lowbit(t) (t&(t^(t-1))) 
#define	RESULT_MAX 15000			/*  */
#define	MAX_NUM 32005			/*  */
//please declare parameters here.
int in[MAX_NUM];
int result[RESULT_MAX];
int N;
//please declare functions here.


//求前n项和
int sum(int end) 
{
	int sum = 0; 
	while(end > 0)
	{
		sum += in[end];
		end -= lowbit(end);
	}
	return sum;
}
//增加某个元素的大小

void plus(int pos, int num)
{
	while(pos<=MAX_NUM)
	{
		in[pos] += num;
		pos += lowbit(pos);
	}
}
int main()
{
	if(freopen("input.txt","r",stdin)==NULL) perror("Can not open the input file!");

	//input your .
	scanf("%d\n",&N);
        int i,x;	
	for(i=0;i<N;i++)
	{
	     x=0;
	char ch;
	while(isdigit((ch=getchar())))
	{
		x=x*10+(ch-'0');
	}
	while(isdigit(getchar()));
//		scanf("%d %d",&x,&y);
//		printf("%d %d\n",x,y);
		x++;
		result[sum(x)]++;
		plus(x,1);
	}
	for(i=0;i<N;i++)
	{
		printf("%d\n",result[i]);
	}
	return 0;
}



POJ2352:Stars(树状数组)

Description Astronomers often examine star maps where stars are represented by points on a plane ...
  • libin56842
  • libin56842
  • 2015年06月21日 16:44
  • 1535

POJ-2352 Stars【树状数组】

题目链接:http://poj.org/problem?id=2352 题目大意: 给你星星的坐标(y递增,若y相等,x递增),每个星星都有一个等级,规定它的等级就是在它左下方的星星的个数。输入所...
  • niushuai666
  • niushuai666
  • 2012年03月24日 07:54
  • 2803

POJ-2352-Stars

POJ-2352-Stars http://poj.org/problem?id=2352 给出n个星星的坐标,如果一个星星的左下方(包含正左和正下)有k颗星星,就说这颗星星是k级的,统计每个等级...
  • Cambridgeacm
  • Cambridgeacm
  • 2012年07月22日 15:15
  • 1425

POJ2352 Stars(树状数组)

和之前那个Japan 那题差不多,而且这个还给
  • u013625609
  • u013625609
  • 2014年05月13日 10:48
  • 304

POJ2352 Stars 树状数组

他已经按照顺序给你得了,不需要我们另外排序,直接忽略y即可,只看x。 #include    #include    #include    #include ...
  • Little_boy_z
  • Little_boy_z
  • 2017年10月17日 19:44
  • 43

POJ2352 stars(树状数组)

题目:Stars   #include #include const int N = 32005; int C[N]; int level[N]; int Lowbit(int x) { ...
  • ACdreamers
  • ACdreamers
  • 2013年03月21日 01:05
  • 719

POJ2352 Stars(树状数组)

题目大意: 给出n个y坐标递减的星星坐标,每个星星都有一个一个等级是这颗星星下边和右边的星星总数(水平垂直也算)。 大体思路:用树状数组统计处在下边和左边的星星总数,下边不用算,因为y坐标递减。只...
  • qq_35124363
  • qq_35124363
  • 2016年06月01日 11:50
  • 201

POJ2352 Stars 树状数组

这题因为y递增,所以后输入的只要不比先输入的x小就等级加一,顺便用树状数组优化,不然依然超时...
  • hh_cnyali
  • hh_cnyali
  • 2016年06月01日 16:20
  • 104

poj2352 Stars (树状数组)

 Stars Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 30541   Acc...
  • u014253173
  • u014253173
  • 2014年05月06日 22:40
  • 1396

【树状数组】poj2352 stars

Stars 题意:计算星星的等级,星星左下方的其他星星的数目就是那颗星星的等级(可以在同一水平线或竖直线上)。输入是按照 纵坐标从小到大顺序,若纵坐标相同则按横坐标从小到大 题解:因为x,y已...
  • jiangnh123
  • jiangnh123
  • 2017年05月16日 20:41
  • 69
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj2352 Stars (第一道树状数组
举报原因:
原因补充:

(最多只允许输入30个字)