AcWing 1265. 数星星
原题链接
中等
作者:
贴着土地生活
,
2020-10-10 12:09:20
,
所有人可见
,
阅读 359
算法1
利用输入的性质可以用一维树状数组(此外这题用二维树状数组会编译爆空间)
C++ 代码
#include<cstdio>
using namespace std;
const int N = 15010, M = 32010;
int tr[M];
int n;
int cnt[N];
int lowbit(int x)
{
return x & -x;
}
void add(int x, int a)
{
for(int i = x; i <= M - 1; i += lowbit(i)) tr[i] += a;
}
int sum(int x)
{
int res = 0;
for(int i = x; i; i -= lowbit(i)) res += tr[i];
return res;
}
int main()
{
scanf("%d", &n);
for(int i = 1; i <= n; ++ i)
{
int x, y;
scanf("%d%d", &x, &y);
++ x, ++ y;
cnt[sum(x)] ++;
add(x, 1);
}
for(int i = 0; i < n; ++ i) printf("%d\n", cnt[i]);
return 0;
}