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 ...
随机推荐
- 初学JavaScript七大注意事项
知识说明: 初学JavaScript,注意以下七大细节,在实现同样功能的情况下,让我们的代码更易懂.效率更高. 一.简化代码 例如:创建对象 之前是这样的: Var car = new object( ...
- springmvc学习第三天
利用spring mvc 实现crud 1.导入jar包 commons-logging-1.2.jarjstl.jarspring-aop-4.1.6.RELEASE.jarspring-beans ...
- [转]LUA元表
lua元表和元方法 <lua程序设计> 13章 读书笔记 lua中每个值都有一个元表,talble和userdata可以有各自独立的元表,而其它类型的值则共享其类型所属的单一元表.lua在 ...
- iOS-UILabel自适应高、宽
UILabel自适应高 UILabel自适应宽
- block捕获自动变量和对象
一.捕获自动变量值 首先看一个经典block面试题: int val = 10; void (^blk)(void) = ^{printf("val=%d\n",val);}; v ...
- H5版俄罗斯方块(4)---火拼对战的雏形
前言: 勿忘初心, 本系列的目标是实现一款类似QQ"火拼系列"的人机对战版俄罗斯方块. 在完成了基本游戏框架和AI的算法探索后, 让我们来尝试一下人机大战雏形编写. 本系列的文章链 ...
- Flex Builder读书笔记(二)——MXML
MXML类似于HTML,它提供各种标签来定义用户界面,但是它比HTML的结构更为严格,并拥有跟多的应用标签.MXML不仅包括可视标签,还包括不可视标签,如web service连接.数据绑定和动画效果 ...
- HDU 4473 Exam 枚举
原题转化为求a*b*c <=n中选出两个数组成有序对<a,b>的选法数. 令a<=b<=c.... 分情况讨论: (1)全部相等,即a = b = c. 选法有n^(1/ ...
- Linux字符界面的优势
优势一:字符界面占用的系统资源更少,更加适合服务器 优势二:字符界面减少了出错.被攻击的可能性(一.二决定了服务器一般不装图形界面,安全稳定优先)
- 字符串匹配--manacher算法模板
manacher算法主要是处理字符串中关于回文串的问题的,它可以在 O(n) 的时间处理出以字符串中每一个字符为中心的回文串半径,由于将原字符串处理成两倍长度的新串,在每两个字符之间加入一个特定的特殊 ...