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

Re:有同学帮我看看哪儿不对吗?example都通过了,就是wrong answer

Posted by DavidWang at 2005-09-13 22:09:00 on Problem 2614
In Reply To:有同学帮我看看哪儿不对吗?example都通过了,就是wrong answer Posted by:scy at 2005-09-13 21:58:53
> /*先按min从大到小排序,尽可能的先装满min,再把remain依次分配给各个瓶子,直到装满,
> 如果所有的都装满,还有剩余的就输出remain,但是如果还有没装满的就表示没有剩余了*/ 
> 
> #include<iostream>
> using namespace std;
> 
>  typedef struct node{
>     float min;
>     float max;
>     int n;
> }NODE;
> NODE sizes1[101];
> 
>        
> int main()
> {
>     long amount;
>     int num;
>     float minimal,maximal;
>     char c;
>     while(cin>>c)
>     {
>         cin.putback(c);
>         cin>>amount>>num;
>         if(amout==0){cout<<0<<end;continue;}
>         for(int i=1;i<=num;i++)
> {cin>>minimal>>maximal;sizes1[i].min=minimal/1000;sizes1[i].max=maximal/1000;sizes1[i].n=0;}
>       
>         //按min的大小从大到小排列
>         for(i=1;i<num;i++)
>         {
>              minimal=sizes1[i].min;
>              int j=i;
>             for(int k=i+1;k<=num;k++)
>             {
>                 if(sizes1[k].min>minimal){minimal=sizes1[k].min;j=k;}
>             }
>             NODE t;
>             t=sizes1[i];
>             sizes1[i]=sizes1[j];sizes1[j]=t;
>         }
>         float remain=0,contain=0;
>         for(i=1;i<=num;i++)
>         {
>             while(1)
>             { 
>                 contain+=sizes1[i].min;
>                 remain=amount-contain;
>                 sizes1[i].n++;
>                 if(remain>=sizes1[i].min)continue;
>                 else 
>                 {
>                     if(remain<0){contain-=sizes1[i].min;remain+=sizes1[i].min;sizes1[i].n--;}
>                     break;
>                 }    
>             }
>         }
>         for(i=1;i<=num;i++)
>         {
>             while(sizes1[i].n>0)
>             {
>                 remain=remain-(sizes1[i].max-sizes1[i].min);
>                 if(remain>0)sizes1[i].n--;
>                 else        break;
>             }
>             if(remain<=0){remain=0;break;}
>         }
>         remain=remain*1000;
>         cout<<remain<<endl;
>     }                
>     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