生活随笔
收集整理的這篇文章主要介紹了
商人的诀窍
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Problem Description
E_star和von是中國赫赫有名的兩位商人,俗話說的好無商不奸,最近E_star需要進(jìn)一批蘋果。可是他需要的蘋果只有von才有,von的蘋果都存在他的傳說中很牛叉的倉庫里,每個倉庫都存了不同種類的蘋果,而且每個倉庫里的蘋果的價錢不同。如果E_star想要買倉庫i里的所有重量為f[i]的蘋果他必須付m[i]的金錢。E_star開著他的傳說中的毛驢車去拉蘋果,而且他只帶了N些金錢。E_star作為傳說中的奸商希望用它所帶的N金錢得到重量最多的蘋果。你作為他最好的朋友,所以他向你求出幫助。希望你能幫忙計算出他能買到最多的蘋果(這里只重量最大)。并輸出最大重量。 提示:這里僅考慮倉庫里蘋果的重量,不考慮個數(shù)。
Input
第一行包括兩個非負(fù)整數(shù)N,M(分別代表E_star帶的金幣數(shù),von盛蘋果的倉庫數(shù)量,不超過50) 接下來有有M行,每行包括兩個數(shù)非負(fù)整數(shù)f[i]和m[i]分別表示第i倉庫里存有重量為f[i]的蘋果,如果將所有蘋果買下要花費(fèi)m[i]的金錢,E_star不必非要將每個倉庫的蘋果全部買下。 當(dāng)M,N同時為-1是結(jié)束。
Output
E_star用N的金幣所能買到的最大重量的蘋果的重量。結(jié)果保留三位小數(shù)。
Example Input
5 3
7 2
4 3
5 2
20 3
25 18
24 15
15 10
-1 -1
Example Output
13.333
31.500
#include <stdio.h>
#include <stdlib.h>
struct node
{int f;int mh;double ave;
}p[51],t;
int main()
{int n,i,j,m;double k;while(~scanf("%d %d",&n,&m)&&n!=-1&&m!=-1){for(i=0;i<m;i++)scanf("%d %d",&p[i].f,&p[i].mh);for(i=0;i<m;i++){p[i].ave=(1.0*p[i].mh)/p[i].f;}for(i=0;i<m;i++)for(j=0;j<m-i-1;j++){if(p[j].ave>p[j+1].ave){t=p[j];p[j]=p[j+1];p[j+1]=t;}}i=0;k=0;while(n){ ? if(i<=m){if(n>=p[i].mh){k+=p[i].f;n-=p[i].mh;i++;}else{k+=n/p[i].ave;break;}}elsebreak;}printf("%.3lf\n",k);}return 0;
}
總結(jié)
以上是生活随笔為你收集整理的商人的诀窍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。