文章

211

粉丝

0

获赞

1130

访问

38.3k

头像
组队刷题 题解:
P1307
发布于2026年3月15日 09:05
阅读数 110

#include<bits/stdc++.h>
using namespace std;

struct node{
	double w,m;
};	
bool cmp(node a,node b){
	return a.m*b.w < b.m*a.w;	
}	
int main(){
	int m,n;
	while(cin >> m >> n){
		if(m == -1 && n == -1)
			break;
		vector<node> g;
		for(int i=0;i<n;i++){
			double wi,mi;
			cin >> wi >> mi;
			g.push_back({wi,mi});
		}
		sort(g.begin(),g.end(),cmp);
		
		double sum = 0;
		for(int i=0;i<n;i++){
			if(m >= g[i].m){
				sum += g[i].w;
				m -= g[i].m;
			}
			else{
				sum += m*g[i].w/g[i].m;
				break;
			}	
		}
		cout << fixed << setprecision(3) << sum << endl ;
	}	
	return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发