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 |
nlogn 的算法也超时????郁闷了我的程序:用二叉排序树做的 #include<stdio.h> #include<stdlib.h> #define maxstar 15001 typedef struct star { int date; int lev; int lchild,rchild; }; int root=-1; int level; int num[maxstar]; star stars[maxstar]; void insert(int x,int i) { int p,q; p=i; if(root==-1) {root=0;stars[root].date=x;stars[root].lev=1;stars[root].lchild=-1;stars[root].rchild=-1;num[level]++;return;} q=root; while(1) { if(stars[q].date==x) {level+=stars[q].lev;num[level]++;stars[q].lev++;return;} if(stars[q].date>x) { if(stars[q].lchild!=-1) {stars[q].lev++;q=stars[q].lchild;continue;} else {stars[q].lev++;stars[q].lchild=p;stars[p].date=x;stars[p].lchild=-1;stars[p].rchild=-1;stars[p].lev=1;num[level]++;return;} } if(stars[q].date<x) { if(stars[q].rchild!=-1) {level+=stars[q].lev;q=stars[q].rchild;continue;} else {level+=stars[q].lev;stars[p].date=x;num[level]++;stars[q].rchild=p;stars[p].lchild=-1;stars[p].rchild=-1;stars[p].lev=1;return;} } } } int main() { int x,y,n,i; scanf("%d",&n); for(i=0;i<=n-1;i++) { scanf("%d%d",&x,&y); level=0; insert(x,i); } for(i=0;i<=n-1;i++) printf("%d\n",num[i]); } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator