3 条题解
-
0
#include<bits/stdc++.h> using namespace std; struct coin{ int m,v; }a[105]; int k,w,s,c; double ans; bool cmp(coin x,coin y){ return x.v*y.m>y.v*x.m; } void solve(){ ans=0; cin>>w>>s; c=w; for(int j=1;j<=s;j++){ cin>>a[j].m>>a[j].v; } sort(a+1,a+s+1,cmp); int cnt=0; bool flag=false; for(int j=1;j<=s;j++){ if(a[j].m>c){ cnt=j; flag=true; break; } c-=a[j].m; ans+=a[j].v; } if(flag){ ans+=1.0*c*a[cnt].v/a[cnt].m; } printf("%.2lf\n",ans); } int main(){ cin>>k; for(int i=1;i<=k;i++){ solve(); } return 0; } -
0
using namespace std; struct coin{ int m,v; }a[105]; int k,w,s,c; double ans; bool cmp(coin x,coin y){ return x.v*y.m>y.v*x.m; } void solve(){ ans=0; cin>>w>>s; c=w; for(int j=1;j<=s;j++){ cin>>a[j].m>>a[j].v; } sort(a+1,a+s+1,cmp); int cnt=0; bool flag=false; for(int j=1;j<=s;j++){ if(a[j].m>c){ cnt=j; flag=true; break; } c-=a[j].m; ans+=a[j].v; } if(flag){ ans+=1.0*c*a[cnt].v/a[cnt].m; } printf("%.2lf\n",ans); } int main(){ cin>>k; for(int i=1;i<=k;i++){ solve(); } return 0; } -
0
#include<bits/stdc++.h> using namespace std; struct coin{ int m,v; }a[105]; int k,w,s,c; double ans; bool cmp(coin x,coin y){ return x.vy.m>y.vx.m; } void solve(){ ans=0; cin>>w>>s; c=w; for(int j=1;j<=s;j++){ cin>>a[j].m>>a[j].v; } sort(a+1,a+s+1,cmp); int cnt=0; bool flag=false; for(int j=1;j<=s;j++){ if(a[j].m>c){ cnt=j; flag=true; break; } c-=a[j].m; ans+=a[j].v; } if(flag){ ans+=1.0ca[cnt].v/a[cnt].m; } printf("%.2lf\n",ans); } int main(){ cin>>k; for(int i=1;i<=k;i++){ solve(); } return 0; }
- 1
信息
- ID
- 411
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 12
- 已通过
- 4
- 上传者