杭电acm2111
贪心
#include <stdio.h> #include <algorithm> using namespace std; struct jewelry { int price; int volume; bool operator < (const jewelry &A) const { return price > A.price; } }buf[101]; int main() { int v, n, i, ans, ids; while(~scanf("%d", &v) && v) { scanf("%d", &n); for(i=0; i<n; i++) scanf("%d%d", &buf[i].price, &buf[i].volume); sort(buf, buf+n); ids = 0; ans = 0; while(v>0 && ids<n) { if(v>=buf[ids].volume) { v -= buf[ids].volume; ans += buf[ids].price * buf[ids].volume; } else { ans += v * buf[ids].price; v = 0; } ids ++; } printf("%d\n", ans); } return 0; }