使用for循环就能过,使用while循环就不能过,为什么?
查看原帖
使用for循环就能过,使用while循环就不能过,为什么?
359433
ganzibin楼主2024/9/3 21:55
#include<bits/stdc++.h>
using namespace std;
struct node
{
	double m;
	double v;
	double cost;
 }; 
bool cmp(node b,node c)
{
	return b.cost>c.cost;
}
node a[105];
int main()
{
	int n,i;
	double result=0,t;
	cin>>n>>t;
	for(i=1;i<=n;i++)
	{
		cin>>a[i].m>>a[i].v;
		a[i].cost=a[i].v/a[i].m;	
	}
	sort(a+1,a+n+1,cmp);
	i=1;
	while(t>0)
	{
		if(t>=a[i].m)
		{
			result+=a[i].v;
			t-=a[i].m;
			i++;
		}
		else
		{
			result += a[i].cost*t;
			t=0;
		}
	}
	printf("%.2lf",result);
	return 0; 
}
2024/9/3 21:55
加载中...