设为首页 加入收藏

TOP

HDOJ 2191
2014-11-23 23:40:06 来源: 作者: 【 】 浏览:8
Tags:HDOJ 2191

Ps:刷水, 背包水题哇卡卡, 赤裸裸的多重背包直接模版........

code:
#include
#include
int n = 0, m = 0, dp[102];
void zero_one(int value, int weight)
{
int j = 0;
for(j = n; j>=value; j--)
dp[j] = dp[j]>dp[j-value]+weight dp[j]:dp[j-value]+weight;
}
int main() www.2cto.com
{
int i = 0, j = 0, k = 0, t = 0;
int p[102], h[102], c[102];
scanf("%d",&t);
while(t--)
{
scanf("%d %d",&n, &m);
for(i = 0; i scanf("%d %d %d",&p[i], &h[i], &c[i]);
memset(dp, 0, sizeof(dp));
for(i = 0; i {
if(p[i]*c[i]>m)
for(j = p[i]; j<=n; j++)
dp[j] = dp[j]>dp[j-p[i]]+h[i] dp[j]:dp[j-p[i]]+h[i];
else
{
k = 1;
while(k {
zero_one(k*p[i], k*h[i]);
c[i] -= k;
k *= 2;
}
zero_one(c[i]*p[i], c[i]*h[i]);
}
}
printf("%d\n", dp[n]);
}
return 0;
}


作者:ulquiorra0cifer
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇poj 1742 Coins (背包) 下一篇poj 1014 Dividing (多重背包)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: