题解 树状数组 POJ 2352
题意:见线段树 POJ 2352
代码:
#include <iostream> #include <cstdio> #include <cstring> using namespace std; const int MAX=200000; int bit[MAX],a[MAX]; int i,n; int sum(int i) { int s=0; while(i>0) { s+=bit[i]; i-=i&-i; } return s; } void add(int i,int x) { while(i<=MAX) { bit[i]+=x; i+=i&-i; } } int main() { int y,b[MAX]; scanf("%d",&n); memset(bit,0,sizeof(bit)); memset(b,0,sizeof(b)); for(i=1;i<=n;i++) { scanf("%d%d",&a[i],&y); } for(i=1;i<=n;i++) { add(a[i]+1,1); b[sum(a[i]+1)-1]++; } for(i=0;i<n;i++) cout<<b[i]<<endl; return 0; }错误:TLE:未考虑坐标范围是大于等于0;