dp4
T1.机器分配(machine)
题目大意:把N台机器分给M个公司,每个公司分到不同数量机器有不同利润,求分配的最大利润。
N<=100,M<=100
解题思路:一眼题啊。设a[x][y]为第x个公司分到y台的利润,f[i][j]为前i个公司共分到j台的最大利润,假设第i个公司分到k台,那么f[i][j]=max(f[i][j],f[i-1][j-k]+a[i][k]),k∈[0,j].显然答案为f[n][m].
空间上应该可以优化到一维数组的。。。枚举i=1 to n ,f[j]为前i个公司分到j台的最大利润,只要改为j=m down to 1算出来就好了。
T2.物品装箱问题(box)
题目大意:01背包,只不过每件“物品”有两个物品可供选择,不能同时选。
解题思路:01背包加一句max判断第二种物品就好了。
T3.快餐问题(meal)
题目大意:一套快餐含有a个汉堡b个薯条c个饮料,现在有n条流水线,每条生产时间t[i],一个汉堡、薯条、饮料分别要p1、p2、p3时间生产,求一天最多生产几套。
解题思路:一开始看到题目想到了很原始的暴力,把流水线总时间相加,除以一套的总时间,得出一个暴力解。(完全错误的解法,不过还是可以骗到60分的,不妨宣称是60分做法)
正解:把每台机器分别尽量按整套生产,得到总套数为wx,然后把剩下的时间进行动归。设f[i][j][k]为前i台机器生产j个汉堡,k个薯条之后还能生产的饮料个数,j’表示第i台机器生产的汉堡个数,k’表示第i台机器生产的薯条个数。
f[i][j][k]=max(f[i-1][j-j’][k-k’]+(t[i]-j’*p1-k’*p2)/p3) .
只要枚举每个j’和k’就行了。这样得到最大套数wy就是
wy=max(min(i/a,j/b,f[n][i][j]/c));
那么ans=wx+wy.
尤其注意:
- 要注意计算最大个数,由于每天最多生产100个,所以不可能超过100/min(a,b,c);
- 枚举过程中要随时用当前变量控制下一层变量的取值范围。
- 去掉没有用的状态,比如前两个不够,第三个已经过多
T4.火车进站(train)
题目大意:一个火车站能同时停m辆车(m<=3),共有n个停靠申请,为到达时刻和出站时刻,求申请的最大接受量。
解题思路:既然m只有3,那就分为3类来做。
先将申请排序,进站时刻为第一关键字,出站第二。
设r[i].t & r[i].tt分别为第i辆火车的进站和出站时间。
m=1时,如果要同时接受i、j两辆车,就要满足
r[i].tt<=r[j].t
那么f[i]为接受第i辆车时已接受的最大车数。
f[i]=max(f[j])+1;初始f[1]=1,其他为0;枚举j=1 to i-1就好了。
m=2时,如果同时接受i、j,以及k辆车,
r[i].tt<=r[k].t,r[i].tt<r[j].tt.
同样的,f[i][j]为接受i、j两辆车时已接受的最大火车数。
f[i][j]=max(f[k][i]+1);初始全为2;枚举k=1 to i-1.
m=3时,如果接受i、j、k,以及l辆车。
f[i][j][k]=max(f[l][i][j]+1);初始全为3;枚举l=1 to i-1.
最后的答案是取f数组中的最大值。
dp4的更多相关文章
- Acer 4750G安装OS X 10.9 DP4(简版)
一.下载os x 10.9懒人版:http://bbs.pcbeta.com/viewthread-1384504-1-1.html 二.用系统自带的磁盘分区工具划分一个5G左右的临时安装盘(新建分区 ...
- caioj 1080 动态规划入门(非常规DP4:乘电梯)(dp数组更新其他量)
我一开始是这么想的 注意这道题数组下标是从大到小推,不是一般的从小到大推 f[i]表示从最高层h到第i层所花的最短时间,答案为f[1] 那么显然 f[i] = f[j] + wait(j) + (j ...
- vcf格式
Variant Call Format(VCF)是一个用于存储基因序列突变信息的文本格式.表示单碱基突变, 插入/缺失, 拷贝数变异和结构变异等.BCF格式文件是VCF格式的二进制文件. CHROM ...
- samtools常用命令详解
samtools的说明文档:http://samtools.sourceforge.net/samtools.shtmlsamtools是一个用于操作sam和bam文件的工具合集.包含有许多命令.以下 ...
- 16083001(古墓丽影GPA)
[目标] 编译UNREALPORJECT2工程 [思路] 1 2 3 一件衣服23932个面 vs: // // Generated by Microsoft (R) HLSL Shader Comp ...
- WCF 编程实验室
最近由于项目需要,简单研究了一下.NET WCF编程. 首先,简单说下WCF是什么,WCF 本质上,是一种开发框架.它用来开发类似COM+ .WEB SERVICE 这样“远程方法调用” 功能. 普通 ...
- 顶点着色器详解 (Vertex Shaders)
学习了顶点处理,你就知道固定功能流水线怎么将顶点从模型空间坐标系统转化到屏幕空间坐标系统.虽然固定功能流水线也可以通过设置渲染状态和参数来改变最终输出的结果,但是它的整体功能还是受限.当我们想实现一个 ...
- Java NIO 之缓冲区
缓冲区基础 所有的缓冲区都具有四个属性来 供关于其所包含的数据元素的信息. capacity(容量):缓冲区能够容纳数据的最大值,创建缓冲区后不能改变. limit(上界):缓冲区的第一个不能被读或写 ...
- Couchbase N1QL
Couchbase的 N1QL已经DP4了,在官方的文档中,Select * From like-table 这个like-table实际上指的是Couchbase中Bucket,那么对于早起版本Co ...
随机推荐
- iOS UITableViewCell 中 调整imageView 的图片大小
在我的项目中,很多地方都希望将UITableViewCell 中的imageView 能根据自己图片的大小来进行展示,而就为了解决这个问题又觉得重写UITableViewCell 很不值得. 如下: ...
- jQuery 菜单项切换
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Objective-C学习笔记-第一天(3)
话不多说,学了这么多,写个快速排序先. 除了快排,以后有时间还要加堆排.归并等等. 今天学了有,类.协议.语法. 因为算法类,不止一个算法.所以新建一个Algorithm(算法)协议: #import ...
- RFID Hacking④:使用ProxMark3 破解门禁
文中提及的部分技术可能带有一定攻击性,仅供安全学习和教学用途,禁止非法使用! 0×00 前言 国际黑客大会Defcon传统之一:开锁!因为黑客认为锁也是一种安全挑战.我们在黑客题材电影.电视剧中也常常 ...
- 传智播客JavaWeb day02笔记
2015年1月21日 今天的主要内容:介绍了几款常用Javaweb服务器,重点介绍了tomcat以及tomcat的安装和怎么样检测安装成功 1.JavaWeb常见服务器 Tomcat(免费但是只支持部 ...
- libevent库1.4升级到2.0时无法flush的解决办法
libevent的接口兼容性做的还算不错,基本上替换一下就转到新版本了.但是,强制flush数据的时候出了问题.目前的应用场景是,遇到顶号登录这种情形,先用bufferevent_write向客户端发 ...
- Windows 托盘区域显示图标
NOTIFYICONDATA structure 这个结构体包含了向通知区域(底部任务栏右下角区域,下面都称为托盘)显示的信息.需要使用函数Shell_NotifyIcon. 结构体成员 typede ...
- kallisto:Near-optimal RNA-Seq quantification
Near-optimal RNA-Seq quantification https://pachterlab.github.io/kallisto 文章标题: Pseudoalignment fo ...
- JQUERY添加、删除元素、eq()方法;
一.jQuery - 添加元素 1.append() - 在被选元素内部的结尾插入指定内容 2.prepend() - 在被选元素内部的开头插入指定内容 3.after() - 在被选元素之后插入内容 ...
- php iquery
<?php/** * */function iQuery($sql) { $dbcon = mysqli_connect("localhost", "root&qu ...