3 条题解

  • 0
    @ 2025-12-28 11:40:01
    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;
    }

    信息

    ID
    411
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    递交数
    12
    已通过
    4
    上传者