【HDOJ】2111 Saving HDU
超水贪心,贴上来是因为例子太经典了,可以比较DP和贪心的不同。(部分背包和0/1背包)
#include <stdio.h> #include <stdlib.h> #define MAXNUM 105 int treas[MAXNUM][2]; int comp(const void *a, const void *b) { return *(int *)b - *(int *)a; } int main() { int v, n; int i, j, tmp; while (scanf("%d", &v)!=EOF && v) { scanf("%d", &n); for (i=0; i<n; ++i) scanf("%d %d", &treas[i][0], &treas[i][1]); qsort(treas, n, sizeof(int)*2, comp); tmp = 0; for (i=0; i<n; ++i) { if (v >= treas[i][1]) { tmp += treas[i][1] * treas[i][0]; v -= treas[i][1]; } else { tmp += v * treas[i][0]; break; } } printf("%d\n", tmp); } return 0; }
浙公网安备 33010602011771号