【HDU 2670】【背包】Girl Love Value

  一开始贪心做,先按照价值排序,然后把可以选中的数目再按悲伤值排序,悲伤值大的先选。结果WA,最后用背包问题A掉的。


#include "stdio.h"
#include "algorithm"
#include "string.h"
using namespace std;
struct girl
{
    int l;
    int b;
}a[1005];
int cmp(struct girl a,struct girl c)
{
    return a.l>c.l;
}
int cmp1(struct girl a,struct girl c)
{
    return a.b>c.b;
}
int main(int argc, char const *argv[])
{
    int n,m;
    int dp[100000];
    while(~scanf("%d %d",&n,&m))
    {
        for (int i = 1; i <= n; ++i)
        {
            scanf("%d",&a[i].l);
        }
        for (int i = 1; i <= n; ++i)
        {
            scanf("%d",&a[i].b);
        }
        sort(a+1,a+n+1,cmp1);
        memset(dp,0,sizeof(dp));
        for(int i = 1; i <= n ;i++)  
        {  
            for(int j=m; j>=1; j--)  
            {  
                dp[j]=max(dp[j],dp[j-1]+a[i].l-a[i].b*(j-1));  
            }  
        }  
        printf("%d\n",dp[m]);
    }
    return 0;
}


你可能感兴趣的:(c,背包)