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 |
Re:咋回事In Reply To:咋回事 Posted by:pcoat at 2008-08-07 18:58:07 修改下,一个错误但是还是wa > 实在是撑不住了,在这里问下 > 我是这样想的, 先把所有island排序,然后从左往右, > 先放一个能覆盖第一个island的最右边的rader,然后看第二个能不能被覆盖,如果能,就算了, > 否则再放能覆盖第二个island的最右边的rader,。。。一直下去 > 但是为何就wa,我觉得和大家用得那个分段区间也差不多。 为啥?? > #include<stdio.h> > #include<math.h> > int main(){ > int n; > float d; > int i,j, k; > int ct ; > int step= 0; > float a[1000]; > float x[1000]; > float y[1000]; > float tmp; > bool flag = true; > while(scanf("%d %f", &n, &d)!=EOF && (n!=0 ||d!=0) ){ > flag = true; > for(i=0; i<n; i++){ > scanf("%f %f", &x[i], &y[i]); > if(y[i] > d) > flag = false; > } > if(flag == false || d<=0){ > printf("Case %d: %d\n", ++step, -1); > continue; > } > > for(i=0; i<n ; i++) > for(j=i+1; j<n; j++) > if(x[i] > x[j]){ > tmp = x[j]; x[j] = x[i]; x[i] = tmp; > tmp = y[j]; y[j] = y[i]; y[i] = tmp; > } > > ct = 0; > a[ct++] = sqrt(d*d-y[0]*y[0]) + x[0]; > for(i=1; i<n; i++){ > if((x[i]-a[i-1])*(x[i]-a[i-1])+y[i]*y[i] > d*d){ > a[ct++] = sqrt(d*d-y[i]*y[i]) + x[i]; > } > } > printf("Case %d: %d\n", ++step, ct); > } > return 0; > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator