經典入門_貪心算法
阿新 • • 發佈:2018-02-04
lin clas .net 最優 3.3 opera 題目 turn spa
貪心是一種總是選擇“當前最好選擇”,而不從整體上去把握的思想,往往這種“貪心”的策略能得到接近最優的結果,甚至某些情況下就是最優解。
例2.11 FatMouse‘Trade(1433)
題目大意如下:有n元錢,m種物品;每種物品有j磅,總價值f元,可以使用0到f的任意價格購買相應磅的物品,例如使用0.3f元,可以購買0.3j磅物品。要求輸出用m元錢最多能買到多少磅物品。
樣例輸入: 5 3 7 2 4 3 5 2 20 3 25 18 24 15 15 10 -1 -1 樣例輸出: 13.333 31.500
#include<stdio.h> #include<algorithm> usingnamespace std; struct goods{ double j; double f; double s;//性價比 bool operator <(const goods &A)const{ return s>A.s; } }buf[1000]; int main(){ int n,m; while(scanf("%d%d",&n,&m)!=EOF){ if(n==-1&&m==-1) break; for(int i=1;i<=m;i++){ scanf("%lf%lf",&buf[i].j,&buf[i].f); buf[i].s=buf[i].j/buf[i].f;//價格除以錢 } sort(buf+1,buf+1+m); double res=0;//累計重量 double quo=0;//商 for(int i=1;i<=m;i++){ if(n>=buf[i].f){ res+=buf[i].j; n-=buf[i].f; }else{ quo=n/buf[i].f; res+=quo*buf[i].j; break; } } printf("%.3lf\n",res);//保留三位小數 } return 0; }
例2.12 今年暑假不AC (1434)
這道題的貪心策略並不是很明顯,但有了思路也很簡單,就懶得敲了,直接po一個鏈接:http://blog.csdn.net/lecholin/article/details/65979763
經典入門_貪心算法