USACO milk
题意:计算从农夫手中购买需要的牛奶的最小价格。
mark:简单排序即可。
代码:
/* ID: andre_j2 LANG: C TASK: milk */ #include <stdio.h> #include <stdlib.h> typedef struct { int p,a; }farmer; int cmp(const void *c, const void *b) { farmer *f1 = (farmer *)c, *f2 = (farmer *)b; if(f1->p != f2->p) return f1->p - f2->p; return f2->a - f1->a; } main () { freopen("milk.in", "r", stdin); freopen("milk.out", "w", stdout); farmer f[5010]; int n,m,price; int i,j,k; scanf("%d%d", &n, &m); for(i = 0; i < m; i++) scanf("%d%d", &f[i].p, &f[i].a); qsort(f, m, sizeof(f[0]), cmp); price = 0; for(i = j = 0; j+f[i].a < n; i++) { j += f[i].a; price += f[i].a*f[i].p; } price += f[i].p*(n-j); printf("%d\n", price); exit (0); }