//贪心法,使用排序函数,每次都找最便宜的牛奶,然后判断够没够重量 #include <iostream> #include <algorithm> #define X 5010 using namespace std; typedef struct milk //定义牛奶结构体 { int p; int a; }milk; int cmp(milk a,milk b) //对牛奶结构体排序 { return a.p<b.p; } int main() { int n,m; freopen("sum.in","r",stdin); freopen("sum.out","w",stdout); while(cin>>n>>m) { struct milk milk[X]; int i; for(i=0;i<m;i++) cin>>milk[i].p>>milk[i].a; //输入牛奶价格、重量 sort(milk,milk+m,cmp); //使用排序函数进行排序 int sum = 0,amount = 0; for(i=0;i<m;i++) { if(amount+milk[i].a>=n) //够了的话 { int need = n-amount; sum = sum + need*milk[i].p; break; } else //牛奶还没够 { sum =sum + milk[i].p*milk[i].a; amount+=milk[i].a; } } cout<<sum<<endl; } return 0; }