题意:有n种商品,每种商品中有a个糖果,如果买这种商品就送多b个糖果,只有第一次买的时候才送。现在有m元,最多能买多少糖果?

思路:第一次买一种商品时有送糖果,对这一次进行一次01背包,也就是只能买一次。然后对这种商品来一次完全背包,此时不送糖果,也可以多买。

 #include <bits/stdc++.h>
#define pii pair<int,int>
#define INF 0x7f7f7f7f
#define LL long long
using namespace std;
const int N=;
LL dp[N];
int n, m, w[N], a[N], b[N]; LL cal()
{
memset(dp, , sizeof(dp));
for(int i=; i<=n; i++) //礼物
{
for(int j=m; j-w[i]>=; j--) //先来一次01背包
{
if( dp[j-w[i]]+ a[i] + b[i] > dp[j] )
dp[j]=dp[j-w[i]]+ a[i] + b[i] ;
}
for(int j=; j+w[i]<=m; j++) //再来一次完全背包
{
if( dp[j+w[i]] < dp[j]+a[i] )
dp[ j+w[i] ] = dp[j]+a[i] ;
}
}
LL sum=-;
for(int i=m; i>; i--) sum=max(sum, dp[i]);
return sum;
} int main()
{
freopen("input.txt", "r", stdin);
int t;
cin>>t;
while(t--)
{
scanf("%d %d", &m, &n);
for(int i=; i<=n; i++) scanf("%d%d%d",&w[i], &a[i], &b[i]);
printf("%lld\n", cal());
} return ;
}

AC代码

最新文章

  1. iOS - UISwitch
  2. r2d_01
  3. Singleton设计模式 分类: 设计模式 2014-12-03 17:54 59人阅读 评论(0) 收藏
  4. 数学概念——F 概率(经典问题)birthday paradox
  5. 转: ajax跨域之JSONP
  6. 4.在浏览器中解析XML
  7. HTTP请求范例
  8. Beta阶段敏捷冲刺每日报告——Day0
  9. UOJ #311「UNR #2」积劳成疾
  10. samba企业级实战应用详解-技术流ken
  11. html/css的学习之路(2)
  12. Android通过Chrome Inspect调试WebView的H5 App出现空白页面的解决方法(不需要FQ)
  13. LeetCode算法题-Number of 1 Bits(Java实现)
  14. Mac支持ntfs格式的移动硬盘读写操作
  15. IntelliJ IDEA(四) :Settings(上)
  16. Date——时间戳转化为YYYY-MM-DD h:m:s时间格式
  17. Android-PullToRefresh 下拉刷新增加setOnItemLongClickListener
  18. 使用UIkit的uk-form-icon后input框无法输入的问题
  19. 安装了nodejs后在命令行运行npm报错:Error: Cannot find module &#39;internal/util/types&#39;
  20. 【转载】oracle索引详解2

热门文章

  1. [AHOI 2006] 上学路线
  2. linux--vsftpd的安装和配置(转)
  3. bzoj 1510 Kra-The Disks —— 思路
  4. Git分布式版本控制工具
  5. hibernate的基础学习
  6. Codeforces - 909C - Python Indentation - 简单dp
  7. python 类对象和实例对象动态添加方法
  8. logrotate日志转储
  9. queue+模拟 Codeforces Round #304 (Div. 2) C. Soldier and Cards
  10. 使用PlSQLDeveloper工具查询Oracle会话数