Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
树状数组第五题~ 死在x=0上,知道为什么错,但是不懂为什么TLE~#include <cstdio> #include <cstring> #define MAX 32005 int x[MAX]; int y[MAX]; int c[MAX]; int level[MAX]; int lowbit(int t) { return t&(-t); } int getSum(int n) { int sum=0; while(n>0) { sum+=c[n]; n-=lowbit(n); } return sum; } void Change(int i,int v,int n) { while(i<=n) { c[i]+=v; i+=lowbit(i); } } int main() { int n; while(scanf("%d",&n)!=EOF) { memset(level,0,sizeof(level)); memset(c,0,sizeof(c)); int mx=0; for(int i=1;i<=n;i++) { scanf("%d %d",&x[i],&y[i]); x[i]++; mx=(x[i]>mx)?x[i]:mx; } for(int i=1;i<=n;i++) { Change(x[i],1,mx); int sum=getSum(x[i])-1; level[sum]++; } for(int i=0;i<n;i++) { printf("%d\n",level[i]); } printf("\n"); } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator