部分背包问题0pts求调
  • 板块灌水区
  • 楼主125125A
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/10/24 13:39
  • 上次更新2024/10/24 16:11:25
查看原帖
部分背包问题0pts求调
1038444
125125A楼主2024/10/24 13:39

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

int n, t;
double Count;

struct A{
	int m, v;
	double sum;
}arr[105];

bool cmp (A a, A b){
	return a.sum > b.sum;
}

int main (){
	
	cin >> n >> t;
	
	for (int i = 0;i < n;i++){
		cin >> arr[i].m >> arr[i].v;
		arr[i].sum = arr[i].v / arr[i].m;
	}
	
	sort (arr, arr + n, cmp);
	
	for (int i = 0;t != 0;i++){
		if (arr[i].m >= t){
			Count += arr[i].v;
			t -= arr[i].m;
		}
		else {
			Count += arr[i].sum * t;
			t = 0;
		}
	}
	
	printf ("%.2lf", Count);
	
	return 0;
}
2024/10/24 13:39
加载中...