2 solutions
-
1
#include<bits/stdc++.h> using namespace std; const int N=110; struct bits{ double m,v; }a[N]; bool cmp(bits a,bits b) { if(a.v/a.m>=b.v/b.m) return 1; return 0; } int main() { int n,t; cin>>n>>t; for(int i=0;i<n;i++) { cin>>a[i].m>>a[i].v; } sort(a,a+n,cmp); double s=0,cnt=0; for(int i=0;i<n;i++) { s+=a[i].m; cnt+=a[i].v; if(s>t) { cnt-=(s-t)*a[i].v/a[i].m; break; } } cout<<fixed<<setprecision(2)<<cnt; return 0; }
-
1
#include<bits/stdc++.h> using namespace std; const int N=110; struct Product{ int v,w; bool operator<(const Product& W)const //重载小于符号(按照单位1价值从高到低排序) { return w*1.0/v>W.w*1.0/W.v; } }p[N]; int main() { int n,m; cin>>n>>m; for(int i=0;i<n;i++) { cin>>p[i].v>>p[i].w; } sort(p,p+n); double res=0; int s=0; for(int i=0;i<n;i++) { if(s+p[i].v<m) //可以选且选完以后还有剩余 { res+=p[i].w; //累加价值 s+=p[i].v; //累加体积 } else { res+=(p[i].w*1.0/p[i].v)*(m-s); //累加剩余价值 break; } } printf("%.2lf",res); return 0; }
- 1
Information
- ID
- 251
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 3
- Tags
- (None)
- # Submissions
- 9
- Accepted
- 7
- Uploaded By