[贪心 + 化学] 多校赛-开学觉醒赛 B
溶液混合浓度 = C1 V1 + C2 V2 / V1 + V2
题目所给数据不足 无法精确计算溶液混合体积
只能将体积相加
由公式推导贪心即可
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <cctype>
#include <string>
#include <cstring>
#include <algorithm>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <ctime>
#include <vector>
#include <fstream>
#include <list>
#include <iomanip>
#include <numeric>
using namespace std;
typedef long long ll;
const int MAXN = 1e6 + 10;
double arr[MAXN];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int T;
cin>>T;
while(T--)
{
int n;
double v, w, tv, tw, tsr;
cin>>n>>v>>w;
for(int i = 0; i < n; i++)
cin>>arr[i];
sort(arr, arr + n);
tv = 0;
tw = 0;
for(int i = 0; i < n; i++)
{
if(tw * tv + arr[i] * v <= w * (tv + v))
{
tw = (tw * tv + arr[i] * v) / (tv + v);
tv += v;
}
else
break;
}
cout<<fixed<<setprecision(0)<<tv<<' ';
cout<<fixed<<setprecision(2)<<tw / 100<<endl;
}
return 0;
}