RQNOJ 671 纯洁的买卖:无限背包
题目链接:https://www.rqnoj.cn/problem/671
题意:
ALEJ要通过倒卖东西来赚钱。
现在他有m元经费。
有n种物品供他选择,每种物品数量无限。
第i件物品的买入价为c[i],卖出价为r[i],每卖出一件物品i后,要交c[i]的税。
问:一次买卖之后,经费最多有多少。
题解:
注:(1)“买”和“卖”是有顺序的。
也就是说,收购一件物品所得到的“未来利润”并不能当作现在的经费来用。
(2)“缴税”是在卖东西的时候,收购的时候并不会在经费中扣除税(c[i])。
相当于从“未来利润”中扣除c[i]
表示状态:
dp[i][j] = max wealth(未来利润)
i:考虑到第i种物品
j:当前花的经费
找出答案:
max dp[i][j] - j
如何转移:
无限背包,正着枚举j。
花费为c[i],价值为w[i] - c[i]。
dp[i][j] = max(dp[i-1][j], dp[i-1][j-c[i]] + w[i])
边界条件:
dp[0][0] = m
others = -1
AC Code:
// state expression:
// dp[i][j] = max wealth
// i: considering ith goods
// j: present cost
//
// find the answer:
// max dp[i][j] - j
//
// transferring:
// dp[i][j] = max(dp[i-1][j], dp[i-1][j-c[i]] + w[i])
//
// boundary:
// dp[0][0] = m
// others = -1
#include <iostream>
#include <stdio.h>
#include <string.h>
#define MAX_N 105
#define MAX_M 1000005 using namespace std; int n,m;
int ans;
int c[MAX_N];
int w[MAX_N];
int dp[MAX_M]; void read()
{
cin>>n>>m;
for(int i=;i<n;i++)
{
cin>>c[i]>>w[i];
}
} void solve()
{
ans=m;
memset(dp,-,sizeof(dp));
dp[]=m;
for(int i=;i<n;i++)
{
for(int j=;j<=m;j++)
{
if(j-c[i]>= && dp[j-c[i]]!=-)
{
dp[j]=max(dp[j],dp[j-c[i]]+w[i]-c[i]);
}
ans=max(ans,dp[j]-j);
}
}
} void print()
{
cout<<ans<<endl;
} int main()
{
read();
solve();
print();
}
RQNOJ 671 纯洁的买卖:无限背包的更多相关文章
- BZOJ 1677 [Usaco2005 Jan]Sumsets 求和:dp 无限背包 / 递推【2的幂次方之和】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1677 题意: 给定n(n <= 10^6),将n分解为2的幂次方之和,问你有多少种方 ...
- UVa 242 Stamps and Envelope Size (无限背包,DP)
题意:信封上最多贴S张邮票.有N个邮票集合,每个集合有不同的面值.问哪个集合的最大连续邮资最 大,输出最大连续邮资和集合元素. 最大连续邮资是用S张以内邮票面值凑1,2,3...到n+1凑不出来了,最 ...
- 背包九讲 附:USACO中的背包问题
附:USACO中的背包问题 USACO是USA Computing Olympiad的简称,它组织了很多面向全球的计算机竞赛活动. USACO Trainng是一个很适合初学者的题库,我认为它的特色是 ...
- [DP之多重背包优化方法]
首先我们看一道有趣的题目 然后这道题很快想到是一个多重背包和无限背包混合体 那么我们就以这道题 来讨论一下多重背包的优化 首先我们看看朴素打法 memset(F,,]=; ;i<=N;i++) ...
- 洛谷P1450 [HAOI2008]硬币购物 背包+容斥
无限背包+容斥? 观察数据范围,可重背包无法通过,假设没有数量限制,利用用无限背包 进行预处理,因为实际硬币数有限,考虑减掉多加的部分 如何减?利用容斥原理,减掉不符合第一枚硬币数的,第二枚,依次类推 ...
- Solution -「洛谷 P4389」付公主的背包
\(\mathcal{Description}\) Link. 容量为 \(n\),\(m\) 种物品的无限背包,求凑出每种容量的方案数,对 \(998244353\) 取模. \(n,m ...
- 【转】ACM训练计划
[转] POJ推荐50题以及ACM训练方案 -- : 转载自 wade_wang 最终编辑 000lzl POJ 推荐50题 第一类 动态规划(至少6题, 和 必做) 和 (可贪心) (稍难) 第二类 ...
- POJ 题目分类(转载)
Log 2016-3-21 网上找的POJ分类,来源已经不清楚了.百度能百度到一大把.贴一份在博客上,鞭策自己刷题,不能偷懒!! 初期: 一.基本算法: (1)枚举. (poj1753,poj2965 ...
- (转)POJ题目分类
初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. ...
随机推荐
- Oracle 中for update和for update nowait的区别
http://www.cnblogs.com/quanweiru/archive/2012/11/09/2762223.html 1.for update 和 for update nowait 的区 ...
- 27:简单错误记录SimpleErrorLog
题目描述 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号. 处理: 1. 记录最多8条错误记录,循环记录,对相同的错误记录(净文件名称和行号完全匹配)只记录一条,错误计数增加: ...
- Java下HttpUnit和Jsoup的Http抓取
简单记录下:搜集信息-分析问题-解决问题 关于html文档的操作现成库有: HttpUnit 很老了,不更了 http://www.httpunit.org/ 20 May 2008 HttpUni ...
- 推荐TED演讲:20岁光阴不再来(Why 30 is not the new 20)
缘起 早上起来在电脑上看到"自强不息"群(群号)中骆宏给大家分享的视频."20岁光阴不再来",利用短暂的时间浏览了一下.就像把这个TED视频分享给很多其它的朋友 ...
- Codeforces 309C Memory for Arrays 二进制模拟进位
题目链接:点击打开链接 题意: 给定n个箱子m个物品 以下n个数字表示箱子的容量 以下m个数字b1-bm 表示物品体积为2^bi大 问最多有多少个物品能够放入箱子. 思路: 贪心,先放小的,小的不能放 ...
- EF6&EFCore 注册/使用实体类的正确姿势
首先回顾下EF中常规使用流程 1.新建实体类以及实体配置(data annotation或fluent api) [Table("Users")] public class Use ...
- fzu 2039 Pets (简单二分图 + (最大流 || 二分图))
Are you interested in pets? There is a very famous pets shop in the center of the ACM city. There ar ...
- 用变量a给出下面的定义。[中国台湾某著名CPU生产公司2005年面试题]
(1)一个整型数(An integer)(2)一个指向整型数的指针(A pointer to an integer)(3)一个指向指针的指针,它指向的指针是指向一个整型数(A pointer to a ...
- GS(道具,帮会)定时存储
//最近数据库存储做了重大改变,数据库内部的回头再说,先看看GS这边的 .现在感觉数据库的状态将请求包放入命令队列中,以前是全部放进去,这样让其他的数据库操作不会随着数据库定时器而变慢,GS线程去驱动 ...
- IOS GameCenter验证登陆
#import "GameKitHelper.h" #import "GameConstants.h" @interface GameKitHelper () ...