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 |
800k^2的计算量吗??In Reply To:time limited!晕!大家有什么更好的算法呀 Posted by:a024014 at 2006-11-11 22:38:20 > #include <stdio.h> > #include <string.h> > #include <iostream> > #include <algorithm> > using namespace std; > typedef struct > { > int w; > int d; > }Order; > Order a[800001]; > short flag[800001]; > bool cmp(Order x,Order y) > { > return x.d<y.d; > } > int main(void) > { > int num,i,j,k; > int counter,pos,max; > while(scanf("%d",&num)!=EOF) > { > for(i=0;i<num;i++) > scanf("%d%d",&a[i].w,&a[i].d); > memset(flag,0,sizeof(flag)); > counter=num; > pos=0; > sort(a,a+num,cmp); > for(i=0;i<num;i++) > { > pos+=a[i].w; > if(pos>a[i].d) > { > max=0; > for(j=0;j<=i;j++) > if((!flag[j])&&a[j].w>max) > { > max=a[j].w; > k=j; > } > flag[k]=1; > pos-=max; > counter--; > } > } > printf("%d\n",counter); > } > return 0; > } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator