usaco Mixing Milk
简单贪心,一个快排就够了。
/* ID: like_091 PROG: milk LANG: C++ */ #include<iostream> #include<fstream> #include<algorithm> #include<string> #include<map> using namespace std; const int MAX = 5005; struct Node{ int p, a; }node[MAX]; int cmp(const void *a, const void *b) { struct Node *c = (Node *)a; struct Node *d = (Node *)b; return c->p - d->p; } int main(void) { ifstream cin("milk.in"); ofstream cout("milk.out"); int n, m, sum; while (cin>>n>>m) { sum = 0; for (int i = 0; i < m; i++) cin>>node[i].p>>node[i].a; qsort(node, m, sizeof(node[0]), cmp); for (int i = 0; i < m; i++) { if (n >= node[i].a) { sum += node[i].p * node[i].a; n -= node[i].a; }else { sum += n * node[i].p; break; } } cout<<sum<<endl; } return 0; }