Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

精度啊 !!!挖了n次之后终于AC了 以下是代码可以看出对精度要求是多么苛刻

Posted by guangming1987 at 2009-01-18 01:39:07 on Problem 1064
还是对精度的了解不够深啊   真难控制

#include <iostream>
#include <algorithm>
using namespace std;
double t;
__int64 num[100000],start,mid,end;__int64 sum,n,k;
int main(){
	__int64 i;
	while(scanf("%I64d%I64d",&n,&k)!=-1){
		for(i=0;i<n;i++){
			scanf("%lf",&t);
			t*=100;
			num[i]=int(t);
			sum+=num[i];
		}
		if(sum<k){printf("0.00\n");continue;}
		sort(num,num+n);
		start=1;end=num[0];
		while(start+1<end){
			sum=0;
			mid=(start+end)/2;
			for(i=0;i<n;i++)sum+=num[i]/mid;
			if(sum<k)end=mid;
			if(sum>=k)start=mid;
		}
		sum=0;
		for(i=0;i<n;i++)sum+=num[i]/end;
		if(sum>=k)printf("%.2lf\n",end*0.01);			
		else printf("%.2lf\n",start*0.01);
	}
	return 0;
}
/*
4 11
8.02
7.43
4.57
5.39
*/

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator