poj 2352 Stars (树状数组)

原创 2015年07月08日 14:14:36

题目;http://poj.org/problem?id=2352

题意:给定n个点的坐标(x,y),n个点按y坐标从小到大输入,如果y坐标相等的按x坐标从小到大输入。统计每个点的左下方有多少个点(包括左边和下边),输出统计数为0的个数、统计数为1的个数...统计数为n-1的有多少个。

分析:对于任意一个点p(x,y),在p的左下方的点t(x',y')的纵坐标y'肯定≤y,那么问题就转化为,对于所有的点,在之前输入的点里面统计横坐标小于x的点的个数(由于输入有序,纵坐标其实没用)。那么用树状数组就很容易解决了,不过注意x可能等于0,0+lowbit(0)==0,会导致死循环,将所有的点向由平移1个点位就行了。

代码:

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <map>
#include <cstring>
using namespace std;

const int INF = 32005;

int tree[INF],ans[INF];

int lowbit(int x)
{
	return x&-x;
}

void update(int x,int v)
{
	for(int i=x;i<INF;i+=lowbit(i))
		tree[i]+=v;
}

int query(int x)
{
	int ret(0);
	for(int i=x;i>0;i-=lowbit(i))
		ret+=tree[i];
	return ret;
}

int main()
{
	int n,i,j,x,y;
	while(scanf("%d",&n)!=EOF)
	{
		memset(tree,0,sizeof(tree));
		memset(ans,0,sizeof(ans));
		for(i=0;i<n;i++)
		{
			scanf("%d%d",&x,&y);
			++ans[query(x+1)];
			update(x+1,1);
		}
		for(i=0;i<n;i++)
			printf("%d\n",ans[i]);
	}
	return 0;
}


版权声明:转吧。

相关文章推荐

POJ 2352 Stars(简单树状数组)

什么是树状数组在这里就不说了啊,这里有解释了啊。http://blog.csdn.net/fulongxu/article/details/19701281 就是一个模版题目,直接套模版都可以过。先建...

poj 2352 Stars(树状数组)

StarsDescriptionAstronomers often examine star maps where stars are represented by points on a plane...

POJ - 2352 Stars解题报告(树状数组求二维区域和)

题目大意:给你一个二维的坐标系(32000*32000),里面有n(15000)个点,告诉你每个点的坐标(各个点各不相同)。定义:(x0,y0)(x_0,y_0)的左下角区域为:{(x,y)(x,y)...

POJ - 2352 - Stars (树状数组!!)

Stars Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 34244   Accepte...

POJ 2352 Stars (树状数组)

Stars Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 32431   Accepte...

POJ2352 Stars 【树状数组】or【线段树】

Stars Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 31172   Accepte...

POJ-2352-Stars-树状数组

树状数组中,每个结点管辖了不同的原数组元素的和。 令A[1...n]表示原数组,C[1...n]表示树状树组。 观察图,可知: C1 = A1 C2 = A1 + A2 C3 = A...

ACM-树状数组之Stars——hdu1541,poj2352

ACM 树状数组 Stars hdu1541 poj2352

POJ 2352 Stars 树状数组

题意:有很多给定坐标的星星,求每个星星左下方的星星数。 题解:用树形数组解。因为输入时y是升序,只要x1 >= x2 就可行。所以可以将二维视作一维,只考虑x就可以了。另外需要注意的是,树形数组不能...
  • Tsaid
  • Tsaid
  • 2011-07-23 22:17
  • 308

POJ2352 Stars(树状数组 or SplayTree)

发现网上并没有这一题的Splay做法。。。SplayTree模板点这里 其实是水题,所以不做讲解。 这里只是来贡献代码。。。树状数组:/* ID: Sunshine_cfbsl LANG: C++...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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