##萌新求救,第一个点AC,剩下四个WA
查看原帖
##萌新求救,第一个点AC,剩下四个WA
516989
forever5726楼主2021/5/22 17:20
#include<iostream>
#include<vector>
#include<iomanip>
using namespace std;
struct Data {
	double m;
	double v;
	double average;
	Data pushback(Data D1)
	{
		m = D1.m;
		v = D1.v;
		average = D1.average;
	}
};
int main()
{
	int T1 = 0;
	double val = 0;
	vector<Data>vi;
	int N, T;
	cin >> N >> T;
	for (int i = 0; i < N; i++)
	{
		double m1, v1;
		cin >> m1 >> v1;
		Data d1;
		d1.m = m1;
		d1.v = v1;
		d1.average = v1 / m1;
		vi.push_back(d1);
	}
	for (auto it = vi.begin(); it != vi.end()-1; it++)
	{
		if (it->average <= (it + 1)->average)
		{
			Data temp = *(it + 1);
			*(it + 1) = *it;
			*it = temp;
		}
	}
		for (auto it = vi.begin(); it != vi.end(); it++)
		{
			if (T1 < T)
			{
				if (T1 + it->m < T)
				{
					T1 += it->m;
					val += it->v;
				}
				else
				{
					int q = T - T1;
					val += it->average * q;
					T1 = T;
				}
			}	
		}
	printf("%.2lf", val);
	return 0;
}
2021/5/22 17:20
加载中...