1 条题解
-
0
C :
#include<stdio.h> #include<string.h> typedef struct{ double W; double F; double Val; }Food; Food food[1000]; int main() { int M, N; int i,j; while(scanf("%d %d",&M,&N)) { if(M == -1 && N == -1) { break; } memset(food,0,sizeof(food)); for(i=0;i<N;i++) { scanf("%lf %lf",&food[i].W,&food[i].F); food[i].Val = food[i].W/food[i].F; } //sort(food,food+N,Cmp); for(i=0;i<N;i++) { for(j=i+1;j<N;j++) { if(food[i].Val<food[j].Val) { Food temp; temp.W=food[i].W; temp.F=food[i].F; temp.Val=food[i].Val; food[i].W=food[j].W; food[i].F=food[j].F; food[i].Val=food[j].Val; food[j].W=temp.W; food[j].F=temp.F; food[j].Val=temp.Val; } } } double res = 0; for(i=0;i<N;i++) { if(M >= food[i].F) { M -= food[i].F; res += food[i].W; } else if(M == 0) { break; } else { double temp = M/food[i].F; res += food[i].W*temp; M = 0; } } printf("%.3lf\n",res); } return 0; }
C++ :
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef struct{ double W; double F; double Val; }Food; Food food[1000]; int Cmp(Food X, Food Y) { return X.Val > Y.Val; } int main() { int M, N; int i; while(scanf("%d %d",&M,&N)) { if(M == -1 && N == -1) { break; } memset(food,0,sizeof(food)); for(i=0;i<N;i++) { scanf("%lf %lf",&food[i].W,&food[i].F); food[i].Val = food[i].W/food[i].F; } sort(food,food+N,Cmp); // for(i=0;i<N;i++) // { // printf("%lf %lf %lf\n",food[i].W,food[i].F,food[i].Val); // } double res = 0; for(i=0;i<N;i++) { if(M >= food[i].F) { M -= food[i].F; res += food[i].W; } else if(M == 0) { break; } else { double temp = M/food[i].F; res += food[i].W*temp; M = 0; } } printf("%.3lf\n",res); } return 0; }
- 1
信息
- ID
- 698
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者