本文主要是介绍奋战杭电ACM(DAY5)1009,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
又干了一题,今天感觉不错呀!再接再厉!晚上继续!!
不知不觉原来用到了昨天看的贪心算法~~~用了才知道这个算法就是贪心,看来还不熟练,继续加油练习!!
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;}elsep[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;
}
这篇关于奋战杭电ACM(DAY5)1009的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!