[恢]hdu 2111

2011-12-16 05:20:42

地址:http://acm.hdu.edu.cn/showproblem.php?pid=2111

题意:中文,拆分背包,直接贪心。

代码:

# include <stdio.h>
# include <stdlib.h>


typedef struct node{
int v, p ;
}node ;

node a[110] ;


int min(int a, int b){return a<b?a:b;}
int cmp(const void *a, const void *b)
{
node *p = (node*)a, *q = (node*)b ;
return q->p - p->p ;
}


int main ()
{
int i, v, n, vv, ans ;
while (~scanf("%d", &v)&&v)
{
scanf ("%d", &n) ;
for (i = 0 ; i < n ; i++)
scanf ("%d%d", &a[i].p, &a[i].v) ;
qsort (a, n, sizeof(node), cmp) ;
ans = 0 ;
for (i = 0 ; i < n ;i++)
{
if (v == 0) continue ;
vv = min(v, a[i].v) ;
ans += vv*a[i].p;
v -= vv ;
}
printf ("%d\n", ans) ;
}
return 0 ;
}



原文地址:https://www.cnblogs.com/lzsz1212/p/2314935.html