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), ...
随机推荐
- Php网站如何优化才好?
尽量静态化: 如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍. 当然了,这个测试方法需要在十万级以上次执行,效果才明显. 其实静态方法和非 ...
- 连续调用scanf的问题总结
对于非常简单的scanf函数,一直使用,但是却是有很多的知识点没有掌握好,现总结如下: 1.多个scanf之后,后序以 scanf("%c",&c) 当程序连续调用scan ...
- Linux下MySQL定时按日期备份数据
一.使用mysql内置命令 mysqldump Usage: mysqldump [OPTIONS] database [tables] mysqldump [OPTIONS] --databases ...
- Netty(五):Netty中如何序列化数据
JDK提供了ObjectOutputStream和ObjectInputStream,用于通过网络对POJO的基本数据类型和图进行序列化和反序列化.该API并不复杂,而且可以被应用于任何实现了java ...
- 【Java】 Spring依赖注入小试牛刀:编写第一个Spring ApplicationContext Demo
0 Spring的依赖注入大致是这样工作的: 将对象如何构造(ID是什么?是什么类型?给属性设置什么值?给构造函数传入什么值?)写入外部XML文件里.在调用者需要调用某个类时,不自行构造该类的对象, ...
- pm2 服务崩溃 Error: bind EADDRINUSE
pm2 服务崩溃 Error: bind EADDRINUSE 发布于 1 年前 作者 zhujun24 2444 次浏览 来自 问答 Error: bind EADDRINUSE 0.0.0 ...
- Double类parseDouble()和valueOf()方法的区别
数字类型的String字符串转换为浮点数通常采用parseDouble()和valueOf()方法, 两者主要是存在以下两点区别. 区别一:参数区别Double.parseDouble(java.la ...
- Linux系统调用及用户编程接口(API)
系统调用 所谓系统调用是指操作系统提供给用户程序调用的一组"特殊"接口,用户程序能够通过这组"特殊"接口来获得操作系统内核提供的服务.比如用户能够通过进程控制相 ...
- 自己动手写CPU之第七阶段(2)——简单算术操作指令实现过程
将陆续上传本人写的新书<自己动手写CPU>.今天是第25篇.我尽量每周四篇 亚马逊的预售地址例如以下,欢迎大家围观呵! http://www.amazon.cn/dp/b00mqkrlg8 ...
- UIWebView使用中的内存相关问题
本文转载至: http://blog.csdn.net/musou_ldns/article/details/7675589 applicationios5webkit测试cacheios 在iO ...