奮戰杭電ACM(DAY5)1009

又幹了一題,今天感受不錯呀!大笑再接再礪!晚上繼續!!奮鬥java

不知不覺原來用到了昨天看的貪心算法~~~用了才知道這個算法就是貪心,看來還不熟練,繼續加油練習!!ios

FatMouse' Trade

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
	int M,N,i,k;
	double javabean,tmp;
	
	while(cin >> M >> N)
	{
		if(M==-1 && N==-1)
			break;
		else
		{   javabean=0;
			double *p= new double[N];
			int *j= new int[N];
			int *f= new int[N];
			for(i=0; i<N; i++)
			{
				cin >> j[i] >> f[i];
				if(f[i]==0)
				{
					javabean+=j[i];
					p[i]=0;
				}
				else
					p[i]=(double)(j[i])/f[i];
			}
			
			for(i=0; i<N-1; i++)
			{
				for(k=i+1; k<N; k++)
					if(p[i]<p[k])
					{
						tmp=p[i]; p[i]=p[k]; p[k]=tmp;
						tmp=j[i]; j[i]=j[k]; j[k]=tmp;
						tmp=f[i]; f[i]=f[k]; f[k]=tmp;
					}
			}

			for(i=0; M>0 && i<N; i++)
			{
				if(M>=f[i])
				{
					javabean += j[i];
					M -=f[i];
				}
				else
				{
					javabean += M*p[i];
					M=0;
				}
			}
			cout << setiosflags(ios::fixed) << setprecision(3) << javabean << endl;
		}
	}
	return 0;
}
相關文章
相關標籤/搜索