题意:

一个套餐需要a个A,b个B,c个C。

你生产一个A需要t1,一个B需要t2,一个C需要t3时间。

你有n台机器。每台每天工作timei时间。

一件物品只能在一个机器上生产。

求你一天最多能生产多少套餐。

每天ABC产量上限是100,n<=10

解:

这个DP的状态表示真是奇怪..

有一种做法是设f[i][j][k][l]表示前i台机器生产j个A,k个B,l个C的最大套餐数量。

被我的 1 1 1   2 2 2   3   3 2 1 卡掉了,输出1,答案是0

还有一种做法是设f[i][j][k][l]表示前i台机器生产j个A,k个B,l个C的所需最少时间。

这是zbtrs提供的。我还没思考。但是直觉上感觉很不对劲....


最后是我用的,f[i][j][k]表示前i台机器生产j个A,k个B时所能生产的最多C数量。

一开始预处理出最大套餐值和最大ABC值。

转移就是枚举这一台/之前的机器生产了多少A和B,然后计算出C来。

注意,一开始的时候可能会从f[0][x][y]之类的不存在的状态转移过来。

解决方案是赋值为-1,特判。初值是f[0][0][0] = 0

有几个剪枝:第一个是这条生产线不能生产更多的A和B了,这时要break

还有就是这个状态的C已经满了,此时不用继续枚举转移了,直接出转移(goto flag)。

然后就把很吓人的时间复杂度剪下去了。

 #include <cstdio>
#include <algorithm>
#include <cstring>
#define say(a) printf(#a); printf(" = %d \n", a)
const int N = ; int f[][N][N], time[N];
int a, b, c;
int t1, t2, t3; int main() {
int n;
scanf("%d%d%d", &a, &b, &c);
scanf("%d%d%d", &t1, &t2, &t3);
scanf("%d", &n);
int sum = , ans = ;
for(int i = ; i <= n; i++) {
scanf("%d", &time[i]);
sum += time[i];
}
int lm = sum / (a * t1 + b * t2 + c * t3);
int maxA = std::min(lm * a, );
int maxB = std::min(lm * b, );
int maxC = std::min(lm * c, ); memset(f, -, sizeof(f));
f[][][] = ;
for(int i = ; i <= n; i++) {
f[i][][] = ;
}
for(int i = ; i <= n; i++) {
for(int j = maxA; j >= ; j--) {
for(int k = maxB; k >= ; k--) {
/// get f[i][j][k]
for(int jj = j; jj >= ; jj--) {
for(int kk = k; kk >= ; kk--) {
if(time[i] < (j - jj) * t1 + (k - kk) * t2) {
goto flag;
}
if(f[i - ][jj][kk] == -) {
continue;
}
f[i][j][k] = std::max(f[i][j][k],
f[i - ][jj][kk] + (time[i] - (j - jj) * t1 - (k - kk) * t2) / t3);
if(f[i][j][k] >= maxC) {
goto flag;
}
}
}
flag:
int now = std::min(j / a, k / b);
now = std::min(now, f[i][j][k] / c);
ans = std::max(ans, now);
}
}
} printf("%d", ans);
return ;
}

AC代码

codevs的数据很弱。强数据在洛谷上。

codevs1260 快餐问题的更多相关文章

  1. DP擎天

    DP! 黄题: 洛谷P2101 命运石之门的选择 假装是DP(分治 + ST表) CF 982C Cut 'em all! 树形贪心 洛谷P1020 导弹拦截 单调队列水题 绿题: 洛谷P1594 护 ...

  2. 白条VS花呗,快餐式消费金融成巨头新战场

    在这一次的国庆假期前,90后网红密子君吃空麦当劳事件引发了网友们的热议.短短半个小时,这位90后网红就吃光了25包薯条,随后又吃下两杯麦旋风,其疯狂举动引得四周食客纷纷围观拍照.那么,是什么刺激这位9 ...

  3. xsank的快餐 » Python simhash算法解决字符串相似问题

    xsank的快餐 » Python simhash算法解决字符串相似问题 Python simhash算法解决字符串相似问题

  4. 实现快餐配送页面jq

    <!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>快 ...

  5. 8.3.2018 1 Quick and dirty 快而脏的快餐

    Quick and dirty  快而脏的快餐 BEIJING  北京 Food delivery is a booming business. Waste is piling up, too  送餐 ...

  6. Tensorflow快餐教程(1) - 30行代码搞定手写识别

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/lusing/article/details ...

  7. 云栖社区 Tensorflow快餐教程

    云栖社区 Tensorflow快餐教程(1) - 30行代码搞定手写识别:https://yq.aliyun.com/articles/582122云栖社区 Tensorflow快餐教程(2) - 标 ...

  8. 快餐问题(dp好题)

    Peter最近在R市开了一家快餐店,为了招揽顾客,该快餐店准备推出一种套餐,该套餐由A个 汉堡,B个薯条和C个饮料组成.价格便宜.为了提高产量,Peter从著名的麦当劳公司引进了N条 生产线.所有的生 ...

  9. 从零开始学习jQuery (六) AJAX快餐

    一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即使你会使用jQuery也能在阅读中发现些许秘籍. 本篇文章讲解如何使用jQuery方便快捷的实现A ...

随机推荐

  1. vue-router路由懒加载(解决vue项目首次加载慢)

    懒加载:----------------------------------------------------? 也叫延迟加载,即在需要的时候进行加载,随用随载. 为什么需要懒加载? 像vue这种单 ...

  2. 一个加载时带动画效果的ListBoxItem

    今天我们来谈一下ListBoxItem这个控件,ListBoxItem是直接从ContentControl继承而来的,所以可以添加到任何具有Content属性的控件中去,常见的ListBoxItem可 ...

  3. Java对象clone()的测试

    Object中自带native clone()方法. 研究了一下用法. public class DeepCopyTest { public static void main(String[] arg ...

  4. 用dbExpress页的SQLConnection1连接sql server2000怎么设置。 [问题点数:0分]

    在d7或者c6已经支持了. 贡献一下我的代码吧:dbeConn:= TSQLConnection.Create(nil);       dbeConn.Params.Clear;       dbeC ...

  5. vue-cli: 渲染过程理解(vue create demo01方式创建)

    1.根目录配置 vue.config.js, 设置入口文件: index.js module.exports = { pages:{ index: { entry: 'src/pages/home/i ...

  6. css伪元素之before和after

    css里面的伪元素主要是用来给选择器设置特殊效果.根据常用性,记录before和after. “:before”伪元素用来在元素的内容前面添加新的元素.比如标题前面会有一个小方块,就可以通过‘ :be ...

  7. 在 Web 页面中使用离线地图

    1. 所需工具&插件: 1. MapDownloader (提取码: spx6) 2. GISMysqlToLocalFile (提取码: vus6) 3. Leaflet 2. 操作: 1. ...

  8. Nginx 磁盘IO的优化

    L:132

  9. 提高网络灵活性和效率的组网方式—SD-WAN

    导读 最初,大多数企业只是简单地将软件覆盖添加到广域网连接上.但是,随着时间的推移,由于SD-WAN架构的易配置功能,企业将开始采用SD-WAN更复杂的功能. 广域网一般用于连接多个业务地点,如总部和 ...

  10. HTTP协议那些事儿(Web开发补充知识点)

    HTTP协议 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式.协作式和超媒体信息系统的应用层协议.HTTP是万维网的数据通信的基础. H ...