RQNOJ 622 最小重量机器设计问题:dp
题目链接:https://www.rqnoj.cn/problem/622
题意:
一个机器由n个部件组成,每一种部件都可以从m个不同的供应商处购得。
w[i][j]是从供应商j处购得的部件i的重量,c[i][j] 是相应的价格。
试设计一个算法,给出总价格不超过d的最小重量机器设计。
题解:
表示状态:
dp[i][j] = min weight
i:考虑到第i个零件
j:当前花费
找出答案:
min dp[n][j] (0<=j<=d)
如何转移:
对于当前零件i,枚举不同的供应商j,转移到相应的下一个dp。
dp[i+1][j+c[i][k]] = min dp[i][j] + w[i][k]
边界条件:
dp[0][0] = 0
others = -1
AC Code:
// state expresssion:
// dp[i][j] = min weight
// i: considering ith component
// j: present cost
//
// find the answer:
// min dp[n][j] (0<=j<=d)
//
// transferring:
// now: dp[i][j]
// dp[i+1][j+c[i][k]] = min dp[i][j] + w[i][k]
//
// boundary:
// dp[0][0] = 0
// others = -1
#include <iostream>
#include <stdio.h>
#include <string.h>
#define MAX_N 1005
#define MAX_M 1005
#define MAX_D 1005
#define INF 10000000 using namespace std; int n,m,d;
int ans;
int w[MAX_N][MAX_M];
int c[MAX_N][MAX_M];
int dp[MAX_N][MAX_D]; void read()
{
cin>>n>>m>>d;
for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
{
cin>>c[i][j];
}
}
for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
{
cin>>w[i][j];
}
}
} void solve()
{
memset(dp,-,sizeof(dp));
dp[][]=;
for(int i=;i<n;i++)
{
for(int j=;j<=d;j++)
{
if(dp[i][j]!=-)
{
for(int k=;k<m;k++)
{
if(dp[i+][j+c[i][k]]==- || dp[i+][j+c[i][k]]>dp[i][j]+w[i][k])
{
dp[i+][j+c[i][k]]=dp[i][j]+w[i][k];
}
}
}
}
}
ans=INF;
for(int i=;i<=d;i++)
{
if(dp[n][i]!=-)
{
ans=min(ans,dp[n][i]);
}
}
} void print()
{
cout<<ans<<endl;
} int main()
{
read();
solve();
print();
}
RQNOJ 622 最小重量机器设计问题:dp的更多相关文章
- RQNOJ 169 最小乘车费用:水dp
题目链接:https://www.rqnoj.cn/problem/169 题意: 给出行驶1-10公里的费用(所有车一样),可以倒车,问行驶n公里的最小费用. 题解: 大水题... (=´ω`=) ...
- FPGA最小系统分析与电路设计
<FPGA最小系统分析与电路设计> 部分节选自<FPGA应用开发入门与典型.pdf > FPGA最小系统包括:FPGA芯片.下载电路.外部时钟.复位电路和电源. 如果使用NIO ...
- HDU4624 Endless Spin 【最大最小反演】【期望DP】
题目分析: 题目是求$E(MAX_{i=1}^n(ai))$, 它等于$E(\sum_{s \subset S}{(-1)^{|s|-1}*min(s))} = \sum_{s \subset S}{ ...
- CS5216 设计于DP转HDMI转换器|DP转HDMI 1080P中继器 电平转化器开关设计方案与线路图
CS5216是一款Displayport to hdmi 1080p音视频信号转换芯片,主要用于设计与开发DP转HDMI 转换器.中继器.电平转换器等产品当中.它支持交流和直流耦合TMDS信号高达1. ...
- P2066 机器分配 (DP+DP输出)
题目描述 总公司拥有高效设备M台,准备分给下属的N个分公司.各分公司若获得这些设备,可以为国家提供一定的盈利.问:如何分配这M台设备才能使国家得到的盈利最大?求出最大盈利值.其中M≤15,N≤10.分 ...
- NOIP1999邮票面值设计[搜索|DP]
题目描述 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤40)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值MAX,使在1-MAX之间的每一个邮资值都能得到 ...
- [NOIP1999提高] CODEVS 1047 邮票面值设计(dfs+dp)
dfs出邮票的各种面值,然后dp求解. ------------------------------------------------------------------------------- ...
- 最小总代价 状压DP
描述 n个人在做传递物品的游戏,编号为1-n. 游戏规则是这样的:开始时物品可以在任意一人手上,他可把物品传递给其他人中的任意一位:下一个人可以传递给未接过物品的任意一人. 即物品只能经过同一个人一次 ...
- RQNOJ 328 炮兵阵地:状压dp
题目链接:https://www.rqnoj.cn/problem/328 题意: 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队. 一个N*M的地图由N行M列组成(N≤100,M≤10), ...
随机推荐
- storm - 可靠机制
一 可靠性简单介绍 Storm的可靠性是指Storm会告知用户每个消息单元是否在一个指定的时间(timeout)内被全然处理. 全然处理的意思是该MessageI ...
- JAVA启动参数整理
http://blog.csdn.net/turkeyzhou/article/details/7619472 java启动参数共分为三类: 其一是标准参数(-),所有的JVM实现都必须实现这些参数的 ...
- Android fragment (二)
怎样使用fragment? 1.首先你要确定下你有多少个fragment要使用在一个activity里. 2.依据你的fragment的数量,创建继承自fragment的class.然后依据实际需求重 ...
- 也谈SQL Server 2008 处理隐式数据类型转换在运行计划中的增强 (续)
在上一篇文章也谈SQL Server 2008 处理隐式数据类型转换在运行计划中的增强中,我提到了隐式数据类型转换添加对于数据分布非常不平均的表.评估的数据行数与实际值有非常大出入的问题,进一步測试之 ...
- mysql中把空值放在最后,有值的数据放在前面
order by column is null,column; 如果:order by column,则column中空值的数据放在最前面,有数据的放在后面
- ubuntu boost.python
安装boost(未尝试只安装 libboost-python-dev) sudo apt-get install libboost-all-dev 新建hello_ext.cpp,输入以下代码 1 c ...
- ubantu 彻底卸载mysql
卸载mysql 第一步 1 sudo apt-get autoremove --purge mysql-server-5.0 2 sudo apt-get remove mysql-server 3 ...
- ASP.NET动态网站制作(10)-- JQ(2)
前言:jq的第二节课. 内容: 1.管理选择结果: (1)获取元素个数:$("img").size():获取页面中所有“img”个数: (2)提取元素:$("img[ ...
- Yii2 跨库orm实现
近期在对公司的Yii2项目进行子系统拆分,过度阶段难免会有一些跨库操作,原生语句还好,加下库名前缀就可以了,可是到了orm问题就来了,特别是用到model做查询的时候,现在来记录一下跳过的坑, 像下面 ...
- 【BZOJ4408】[Fjoi 2016]神秘数 主席树神题
[BZOJ4408][Fjoi 2016]神秘数 Description 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13},1 = 12 = 1 ...