以X为坐标 建立一维的树状数组即可 由于X=0.。。超时 所以把x+1
return a.x<b.x;
}
ll low[N];
ll index[N];
void add(int k,int num)
{
while(k<=N)
{
low[k]+=num;
k+=k&-k;
}
}
ll sum(int k)
{
ll res=0;
while(k>0)
{
res+=low[k];
k-=k&-k;
}
return res;
}
int main()
{
int i,j;
while(scanf("%d",&n)!=EOF)
{
MM(low,0);
MM(index,0);
if(n==0)
break;
for(i=0;i<n;i++)
{
scanf("%d%d",&node[i].x,&node[i].y);
node[i].x++;
add(node[i].x,1);
index[sum(node[i].x)-1]++;
}
for(i=0;i<n;i++)
{
printf("%lld\n",index[i]);
}
}
return 0;
}
本文介绍了一种在一维空间中使用树状数组解决特定问题的方法。通过建立树状数组来处理区间查询与更新操作,文章详细展示了如何利用树状数组进行高效的前缀和计算,并提供了完整的代码实现。
390

被折叠的 条评论
为什么被折叠?



