SSL2895 购买干草
快速链接
- 原题链接
- 题目大意
- 解题思路
- 上代码
原题链接
外网进不去
题目大意
有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={dpjmin(dpj,dpj−wi+ci)1≤i≤n,0≤j<wi1≤i≤n,wi≤j≤m+extra
答案就是:
minm≤i≤m+extradpj\min_{m\le i\le m+extra}dp_j m≤i≤m+extramindpj
加上了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 购买干草相关推荐
- [BZOJ] 1606: [Usaco2008 Dec]Hay For Sale 购买干草
1606: [Usaco2008 Dec]Hay For Sale 购买干草 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1335 Solved: ...
- BZOJ 1606: [Usaco2008 Dec]Hay For Sale 购买干草
1606: [Usaco2008 Dec]Hay For Sale 购买干草 Description 约翰遭受了重大的损失:蟑螂吃掉了他所有的干草,留下一群饥饿的牛.他乘着容量为C(1≤C≤5 ...
- BZOJ_1606_ [Usaco2008_Dec]_Hay_For_Sale _购买干草_(背包)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1606 价值和重量相等的01背包问题. 分析 ... 1 #include <bits/s ...
- bzoj 1618: [Usaco2008 Nov]Buying Hay 购买干草(完全背包)
1618: [Usaco2008 Nov]Buying Hay 购买干草 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1196 Solved: 62 ...
- 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: ...
- SSLOJ2895 购买干草
Description 约翰的干草库存已经告罄,他打算为奶牛们采购H(1≤H≤50000)磅干草,他知道N(1≤N≤100)个干草公司,现在用1到N给它们编号.第i个公司卖的干草包重量为Pi(1≤Pi ...
- bzoj 1606 购买干草
Description 约翰遭受了重大的损失:蟑螂吃掉了他所有的干草,留下一群饥饿的牛.他乘着容量为C(1≤C≤50000)个单位的马车,去顿因家买一些干草. 顿因有H(1≤H≤5000)包干草,每 ...
- 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 ...
- bzoj1618 购买干草
Description 约翰的干草库存已经告罄,他打算为奶牛们采购日(1≤日≤50000)磅干草.他知道N(1≤N≤100)个干草公司,现在用1到N给它们编号.第i个公司卖的干草包重量为Pi(1≤Pi ...
最新文章
- C-Substring的实现
- Mybatis操作主体流程
- Ksusha and Array (vector)
- orgman set触发的pricing set创建逻辑
- python基础应用_【复习】mysql+python基础应用(20190815)
- UVALive 4329 Ping pong
- springboot 配置全局响应数据_spring boot 全局事务配置
- 洛谷——P1897 电梯里的爱情(两种解法:普通方法、桶排序方法)
- Spark SQL练习
- 一文读懂YUV的采样与格式
- 马蹄疾 | 2019年,是时候认真学一波 Grid 布局了
- 15.6. footnote 脚注
- 倾斜摄影测量(无人机影像)的三维建模和DSM,DOM的生成(挖坑)
- OpenWrt系列教程汇总
- 解决蓝奏云的文件分享链接打不开的问题
- java 环形矩阵_java下蛇形回环矩阵的实现
- 说说IT企业固定资产管理系统的问题和解决方法
- 对于传统教育和线上教育的思考
- 对均匀采样信号进行重采样
- 【经验】使用Nginx对kiftd进行反向代理和域名绑定