1 条题解

  • 0
    @ 2024-7-27 19:59:00
    #include <bits/stdc++.h>
    using namespace std;
    struct coin{
    	int n,v;  //n代表 重量  v代表价值
    	double nv;   // 每公斤价值
    };
    bool cmp(coin x,coin y){
    	return x.nv>y.nv;
    }
    int main(){
        int k,w,s;
    	double sum=0;
    	cin>>k;
        for(int i=1;i<=k;i++){
           cin>>w;
    	   cin>>s;
    	   sum=0;
    	   vector<coin> a(s);
    	   for(int j=0;j<s;j++){
    		  cin>>a[j].n>>a[j].v;
    		  a[j].nv= a[j].v*1.0 /  a[j].n;
    	   }
    	   sort(a.begin(),a.end(),cmp);
            for(int j=0;j<s;j++){
               if(a[j].n<=w){
                 sum+=a[j].v;
    			 w-=a[j].n;
    		   }else{
    			sum+=  a[j].nv * w;
    			break;
    		   }
    		}
    		cout<<fixed<<setprecision(2)<<sum<<endl;
    	}
    
    
    	return 0;
    }
    
    • 1

    信息

    ID
    410
    时间
    1000ms
    内存
    256MiB
    难度
    3
    标签
    递交数
    34
    已通过
    21
    上传者