Poweroj 1194(dp背包问题)
来源:互联网 发布:手机电影拍摄软件 编辑:程序博客网 时间:2024/06/07 22:04
Description
中秋节马上就要到了,小Y计划给基友买月饼。由于经济压力,小Y计算最多只用M元钱买月饼。超市有N种月饼,每种都有单价。由于有些月饼比较抢手,剩下的个数有限,有的月饼有无限多个。小Y的基友对于每种月饼都有不一样的喜爱程度。小Y为了让基友尽可能的高兴,他想用计算之内的钱购买的月饼使得基友的喜爱程度最高。(每个月饼都有一个喜爱度。基友的喜爱程度是小Y购买到月饼的喜爱度的总和。)
Input
Output
11
题意:就如同题目描述一样。
代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int maxn=100005;
int dp[maxn],love[maxn],price[maxn],countt[maxn];
int main()
{
int i,j,k,n,m;
while(~scanf("%d%d",&m,&n))
{
memset(dp,0,sizeof(dp));
for(i=1;i<=n;i++)
scanf("%d%d%d",&love[i],&price[i],&countt[i]);
for(i=1;i<=n;i++)
{
if(countt[i]==1)//01背包,每个物品只有1个,可以选择放还是不放
{
for(j=m;j>=price[i];j--)
dp[j]=max(dp[j],dp[j-price[i]]+love[i]);
}
else if(countt[i]=-1)//完全背包,每个物品都有无限个使用
{
for(j=price[i];j<=m;j++)
dp[j]=max(dp[j],dp[j-price[i]]+love[i]);
}
else
{
for(k=1;k<=countt[i];k++)//多重背包,第看k件物品最多有m件可以用
for(j=m;j>=price[i];j--)
dp[j]=max(dp[j],dp[j-price[i]]+love[i]);
}
}
printf("%d\n",dp[m]);
}
}
- Poweroj 1194(dp背包问题)
- PowerOJ 2475 Xor问题
- DP 背包问题 01背包
- DP背包问题
- DP【背包问题】
- DP&背包问题
- dp之背包问题
- DP优化--背包问题
- DP背包问题
- dp背包问题
- DP —> 背包问题
- 饭卡 --背包问题dp
- 【背包+DP】背包问题+面试实例
- hdu 2955(DP背包问题)
- 背包问题(DP、回溯)
- 【动态规划】背包问题 - dp
- DP之一般背包问题
- hdu1561(树形DP+背包问题)
- 附录A:Windows编程入门
- php,java实现抽象工厂模式
- java基础学习(五)访问权限控制
- 基于XMPP协议(openfire服务器)的消息推送实现
- 循环中的闭包
- Poweroj 1194(dp背包问题)
- A Boring Game
- Openfire 用户离线、断线 及心跳检测
- Hadoop组件配置
- 通过netcraft查询一个网站的服务信息
- 我的程序员之路(英语的学习)
- IONIC 自动更新APP版本
- Python自动运维系列:每天凌晨定时执行特定任务
- [勇者闯LeetCode] 35. Search Insert Position