- 题目大意
从左到右,从下到上,然后分别给出星星,而星星的level就是在它下面和左边的星星个数,然后要你求出0-n-1的level的星星有几个。
- 解题思路
利用树状数组来做,给出的点按y排好序,相同的y按x的递增顺序给出。y不用考虑,只要考虑x就可以了。
- 代码
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cstring> #include<stack> using namespace std; int n; const int N=1e6+1; int num1[N]; int num[N]; int lowbit(int x) { return x&(-x); } int sum(int x) { int re=0; for(int i=x;i>0;i-=lowbit(i)) re+=num[i]; return re; } void add(int x) { for(int i=x;i<N;i+=lowbit(i)) num[i]++; } int main() { int m,a,b; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d%d",&a,&b); a++; num1[sum(a)]++; add(a); } for(int i=0;i<n;i++) printf("%d ",num1[i]); return 0; }