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

数据加强了,错了

Posted by yp0416160202 at 2018-02-05 20:26:02 on Problem 1064
In Reply To:哥用double过了。。。 Posted by:guoyiwei111 at 2011-06-03 20:11:48
> //注意: 因为是用二分,所以left应该在标准值左边,可能会出现 x.999999这种情况 ,而right 就不会了。
> #include <cstdio>
> #include <cstring>
> #include <cmath>
> #include <algorithm>
> const double limit = 1e-5;
> using namespace std;
> double all[10001];
> bool  num(double M,int N,int K){
>     int res=0;
>     for(int i=0;i<N;i++){
>         res+=(all[i]/M);
>         if(res>=K)
>             return true;
>     }
>     return false;
> }
> int main(){
>     //freopen("E:\\Desktop\\in.txt","r",stdin);
>     int N,K;
>     while(scanf("%d%d",&N,&K)!=EOF){
>         double left,right,mid;
> 
>         double max_len=0;
>         double tmp;
>         for(int i=0;i<N;i++){
>             scanf("%lf",&all[i]);
>             max_len=max(max_len,all[i]);
>         }
>         right=max_len;
>         left=0;//配合最后的-1 为了处理为0.00 的情况
>         while(right-left>limit){
>             mid=(left+right)/2;
>             if(num(mid,N,K)){
>                 left=mid;
>             }
>             else{
>                 right=mid;
>             }
>         }
>         if((int)(right*1000)%10>=5) right-=0.005;//因为要用浮点数输出 所以 如果是 0.005 的话会输出0.01!!!!!!一定要注意
>         printf("%.2lf\n",(double)right);
>     }
>     return 0;
> }

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