快速链接

  • 原题链接
  • 题目大意
  • 解题思路
  • 上代码

原题链接

外网进不去

题目大意

有nnn种干草,每种干草都有他们对应的价钱和质量。给出这nnn种干草的价钱和质量,求出买够mmm质量的干草至少需要多少钱。
Sample\mathbf{Sample}Sample Input\mathbf{Input}Input

2 15
3 2
5 3

Sample\mathbf{Sample}Sample Output\mathbf{Output}Output

9

Hint&Explain\mathbf{Hint\&Explain}Hint&Explain
买333个第222种干草,重量为5*3=15,价值为3*3=9

解题思路

如果求的是最大钱数,那么这题就是一个裸的完全背包,但是他求的是最小价值,所以要加一个初始化,把初始时所有的最小价格设成一个最大值,作者这里用的是0x7f7f7f7f\mathbf{0x7f7f7f7f}0x7f7f7f7f,然后把dp0dp_0dp0​设为000,因为你不用取就可以达到000个单位。
虽说初始化做好了,但是你加上初始化交上去,你肯定会

,因为有一些极端的数据就会卡死你,如下面的数据:
Input\mathbf{Input}Input

3 100
100 1000
101 2000
1000 1

Output\mathbf{Output}Output

1

由于他有一个非常大的干草数,但是价格又非常便宜(是不是假的干草),你的程序就必须要选到他,即把容量放大,加一个额外的容量extraextraextra,我这里设他为500150015001。
现在就可以放出状态转移方程了。
设dpjdp_jdpj​为要取jjj个单位的干草最少需要多少钱,wiw_iwi​为第iii种干草的质量,cic_ici​为第iii种干草的价钱,而extraextraextra的定义如上。
dpj={dpj1≤i≤n,0≤j<wimin(dpj,dpj−wi+ci)1≤i≤n,wi≤j≤m+extradp_j=\begin{cases} dp_j&1\le i\le n,0\le j<w_i \\min(dp_j,dp_{j-w_i}+c_i)&1\le i\le n,w_i\le j\le m+extra \end{cases} dpj​={dpj​min(dpj​,dpj−wi​​+ci​)​1≤i≤n,0≤j<wi​1≤i≤n,wi​≤j≤m+extra​
答案就是:
min⁡m≤i≤m+extradpj\min_{m\le i\le m+extra}dp_j m≤i≤m+extramin​dpj​
加上了extraextraextra交上去后,你就会

了。

上代码

#include<iostream>
#include<cstring>
using namespace std;int n,m;
int w[1010],c[1010];
int dp[60000];int main()
{memset(dp,0x7f,sizeof(dp));dp[0]=0;int extra=5001;cin>>n>>m;for(int i=1; i<=n; i++) cin>>w[i]>>c[i];// for(int i=1; i<=m; i++) dp[1][i]=((i-1)/w[1]+1)*c[1];for(int i=1; i<=n; i++){for(int j=w[i]; j<=m+extra; j++){dp[j]=std::min(dp[j],dp[j-w[i]]+c[i]);}}int ans=0x7f7f7f80;for(int i=m; i<=m+extra; i++) ans=std::min(ans,dp[i]);cout<<ans<<endl;return 0;
}

完美切题∼\sim∼

SSL2895 购买干草相关推荐

  1. [BZOJ] 1606: [Usaco2008 Dec]Hay For Sale 购买干草

    1606: [Usaco2008 Dec]Hay For Sale 购买干草 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1335  Solved:  ...

  2. BZOJ 1606: [Usaco2008 Dec]Hay For Sale 购买干草

    1606: [Usaco2008 Dec]Hay For Sale 购买干草 Description     约翰遭受了重大的损失:蟑螂吃掉了他所有的干草,留下一群饥饿的牛.他乘着容量为C(1≤C≤5 ...

  3. BZOJ_1606_ [Usaco2008_Dec]_Hay_For_Sale _购买干草_(背包)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1606 价值和重量相等的01背包问题. 分析 ... 1 #include <bits/s ...

  4. bzoj 1618: [Usaco2008 Nov]Buying Hay 购买干草(完全背包)

    1618: [Usaco2008 Nov]Buying Hay 购买干草 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1196  Solved: 62 ...

  5. bzoj 1606 [Usaco2008 Dec]Hay For Sale 购买干草(01背包)

    1606: [Usaco2008 Dec]Hay For Sale 购买干草 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1300  Solved:  ...

  6. SSLOJ2895 购买干草

    Description 约翰的干草库存已经告罄,他打算为奶牛们采购H(1≤H≤50000)磅干草,他知道N(1≤N≤100)个干草公司,现在用1到N给它们编号.第i个公司卖的干草包重量为Pi(1≤Pi ...

  7. bzoj 1606 购买干草

    Description 约翰遭受了重大的损失:蟑螂吃掉了他所有的干草,留下一群饥饿的牛.他乘着容量为C(1≤C≤50000)个单位的马车,去顿因家买一些干草.  顿因有H(1≤H≤5000)包干草,每 ...

  8. 01背包 || BZOJ 1606: [Usaco2008 Dec]Hay For Sale 购买干草 || Luogu P2925 [USACO08DEC]干草出售Hay For Sale...

    题面:P2925 [USACO08DEC]干草出售Hay For Sale 题解:无 代码: 1 #include<cstdio> 2 #include<cstring> 3 ...

  9. bzoj1618 购买干草

    Description 约翰的干草库存已经告罄,他打算为奶牛们采购日(1≤日≤50000)磅干草.他知道N(1≤N≤100)个干草公司,现在用1到N给它们编号.第i个公司卖的干草包重量为Pi(1≤Pi ...

最新文章

  1. C-Substring的实现
  2. Mybatis操作主体流程
  3. Ksusha and Array (vector)
  4. orgman set触发的pricing set创建逻辑
  5. python基础应用_【复习】mysql+python基础应用(20190815)
  6. UVALive 4329 Ping pong
  7. springboot 配置全局响应数据_spring boot 全局事务配置
  8. 洛谷——P1897 电梯里的爱情(两种解法:普通方法、桶排序方法)
  9. Spark SQL练习
  10. 一文读懂YUV的采样与格式
  11. 马蹄疾 | 2019年,是时候认真学一波 Grid 布局了
  12. 15.6. footnote 脚注
  13. 倾斜摄影测量(无人机影像)的三维建模和DSM,DOM的生成(挖坑)
  14. OpenWrt系列教程汇总
  15. 解决蓝奏云的文件分享链接打不开的问题
  16. java 环形矩阵_java下蛇形回环矩阵的实现
  17. 说说IT企业固定资产管理系统的问题和解决方法
  18. 对于传统教育和线上教育的思考
  19. 对均匀采样信号进行重采样
  20. 【经验】使用Nginx对kiftd进行反向代理和域名绑定

热门文章

  1. can收发器 rx_CAN/CANFD采样点
  2. Datawhale十月组队学习_推荐系统3
  3. 【Vue】webpack的基本使用
  4. Python爬取cosplay小姐姐图片
  5. 网站安全公司waf防火墙的作用分析
  6. 中专计算机学数学,科学计算器在中职数学教学中的意义
  7. AE教程丨1分钟学会制作信号故障风特效
  8. 智能汽车发展战略-思维导图版本
  9. 仔细体验,我想从产品设计的角度分析分析微信的声音锁
  10. 直播美颜SDK动态贴纸详解