题目链接: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 纯洁的买卖:无限背包的更多相关文章

  1. BZOJ 1677 [Usaco2005 Jan]Sumsets 求和:dp 无限背包 / 递推【2的幂次方之和】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1677 题意: 给定n(n <= 10^6),将n分解为2的幂次方之和,问你有多少种方 ...

  2. UVa 242 Stamps and Envelope Size (无限背包,DP)

    题意:信封上最多贴S张邮票.有N个邮票集合,每个集合有不同的面值.问哪个集合的最大连续邮资最 大,输出最大连续邮资和集合元素. 最大连续邮资是用S张以内邮票面值凑1,2,3...到n+1凑不出来了,最 ...

  3. 背包九讲 附:USACO中的背包问题

    附:USACO中的背包问题 USACO是USA Computing Olympiad的简称,它组织了很多面向全球的计算机竞赛活动. USACO Trainng是一个很适合初学者的题库,我认为它的特色是 ...

  4. [DP之多重背包优化方法]

    首先我们看一道有趣的题目 然后这道题很快想到是一个多重背包和无限背包混合体 那么我们就以这道题 来讨论一下多重背包的优化 首先我们看看朴素打法 memset(F,,]=; ;i<=N;i++) ...

  5. 洛谷P1450 [HAOI2008]硬币购物 背包+容斥

    无限背包+容斥? 观察数据范围,可重背包无法通过,假设没有数量限制,利用用无限背包 进行预处理,因为实际硬币数有限,考虑减掉多加的部分 如何减?利用容斥原理,减掉不符合第一枚硬币数的,第二枚,依次类推 ...

  6. Solution -「洛谷 P4389」付公主的背包

    \(\mathcal{Description}\)   Link.   容量为 \(n\),\(m\) 种物品的无限背包,求凑出每种容量的方案数,对 \(998244353\) 取模.   \(n,m ...

  7. 【转】ACM训练计划

    [转] POJ推荐50题以及ACM训练方案 -- : 转载自 wade_wang 最终编辑 000lzl POJ 推荐50题 第一类 动态规划(至少6题, 和 必做) 和 (可贪心) (稍难) 第二类 ...

  8. POJ 题目分类(转载)

    Log 2016-3-21 网上找的POJ分类,来源已经不清楚了.百度能百度到一大把.贴一份在博客上,鞭策自己刷题,不能偷懒!! 初期: 一.基本算法: (1)枚举. (poj1753,poj2965 ...

  9. (转)POJ题目分类

    初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.     (4)递推. ...

随机推荐

  1. 【LeetCode】84. Largest Rectangle in Histogram——直方图最大面积

    Given n non-negative integers representing the histogram's bar height where the width of each bar is ...

  2. VMware Workstation 永久许可证密钥

    VMware是功能最强大的虚拟机软件,用户可在虚拟机同时运行各种操作系统,进行开发.测试.演示和部署软件,虚拟机中复制服务器.台式机和平板环境,每个虚拟机可分配多个处理器核心.主内存和显存. VMwa ...

  3. ordinal parameter mismatch

    © 版权声明:本文为博主原创文章,转载请注明出处 错误描述:Caused by: org.hibernate.HibernateException: ordinal parameter mismatc ...

  4. Dubbo--简单介绍

    Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,能够和Spring框架无缝集成.Dubbo致力于提供高性能和透明化的RPC远程服务调用 ...

  5. Centos 7.0系统服务管理

    从Centos7开始,不再用sysvinit管理系统服务了,而是改用了systemd,因此对系统服务管理方法已经变更,以下简述 1.查看当前所有系统服务的状态 systemctl 2.查看指定系统服务 ...

  6. JavaScript系列问题

    JavaScript系列问题:  0.javascript 基础教程[温故而知新一] 1.通过JS变更页面字体的大小 2.图片压缩优化能有效提高网站浏览速度

  7. 关于proplists:get_value/2 与lists:keyfind/3 的效率比较

    关于proplists:get_value/2 与lists:keyfind/2 的效率 早有比较,已出结论,lists:keyfind/2 的效率要好很多,好些人都是直接用或者做过它们之间的比较测试 ...

  8. 深入Asyncio(二)从线程到协程

    线程的真相 多线程并不是一无是处,在实际问题中,要权衡优劣势来选择多线程.多进程或是协程.协程为多线程的某些问题提供了一种解决方案,所以学习协程首先要对线程有一定了解. 多线程优点 代码可读性 多线程 ...

  9. ios美颜 调研 GPUImage GPUImageBeautifyFilter BeautifyFaceDemo

    最近需要给直播项目中添加美颜的功能,调研了很多SDK和开源代码(视决,涂图,七牛,金山云,videoCore等),综合成本/效果/对项目侵入性,最后决定使用一款基于GPUImage实现的 Beauti ...

  10. python 基础 9.3 mysql 数据操作

    #/usr/bin/python #coding=utf-8 #@Time   :2017/11/21 0:20 #@Auther :liuzhenchuan #@File   :mysql 数据操作 ...