题目:http://hustoj.sinaapp.com/problem.php?id=1825
制造商从多个原材料提供商获取原材料,使费用最小
思路:快排,贪心法
#include <stdio.h> #include <stdlib.h> struct milksuply { int cost; int num; }suply[5005]; int cmp(const void *a,const void *b) { return ((milksuply *)a)->cost-((milksuply *)b)->cost; } int main() { int n,m; scanf("%d%d",&n,&m); for(int i=0;i<m;i++) { scanf("%d%d",&suply[i].cost,&suply[i].num); } qsort(suply,m,sizeof(milksuply),cmp); int sum=0; int ans=0; for(int i=0;i<m;i++) { if(sum+suply[i].num>n) { ans+=(n-sum)*suply[i].cost; break; } else { sum+=suply[i].num; ans+=suply[i].num*suply[i].cost; } } printf("%d\n",ans); }