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 ...
随机推荐
- python3 reqeuests给OSC全站用户刷积分
严格来讲是给在OSC上贡献过内容的OSC用户刷积分. OSC很多操作都需要消耗积分,很多人给OSC贡献了内容, 但是却没有人点赞,所以有些人在OSC混了很多年也没有积分. 本文中使用到的工具有gifc ...
- sqoop将关系型数据库的表导入hive中
1.sqoop 将关系型数据库的数据导入hive的参数说明:
- 2014年3月份第3周51Aspx源码发布详情
WPF翻书效果源码 2014-3-17 [VS2010]源码描述:WPF翻书效果源码:多点触控的一个Demo,利用鼠标可以实现图书翻页效果:适合新手学习研究. TL简单家具网新手源码 2014-3 ...
- JavaScript数组方法总结
由于最近都在freecodecamp上刷代码,运用了很多JavaScript数组的方法,因此做了一份关于JavaScript教程的整理,具体内容如下: 一.普通方法 1.join() 将数组元素连接在 ...
- Python学习路程day10
Twsited异步网络框架 Twisted是一个事件驱动的网络框架,其中包含了诸多功能,例如:网络协议.线程.数据库管理.网络操作.电子邮件等. 事件驱动 简而言之,事件驱动分为二个部分:第一,注册事 ...
- iOS 自定义emoji表情键盘
之前走了很多弯路,包括自己定以emoji表情,自己创建view类去处理图文混排 ,当把这些焦头烂额的东西处理完了才发现 ,其实系统自带键盘是如此的方便,iOS 系统自带的表情在view,textfie ...
- segues的类型
Name Interface Builder symbol Description Show Present the content in the detail or master area depe ...
- PyCharm5.0.2最新版破解注册激活码(图文版)
下载PyCharm http://download-cf.jetbrains.com/python/pycharm-professional-5.0.2.exe 安装PyCharm 设置激活服务器 ...
- 【LeetCode OJ】Balanced Binary Tree
Problem Link: http://oj.leetcode.com/problems/balanced-binary-tree/ We use a recursive auxilar funct ...
- 动态获取项加入到SQL中去统计
public static List<CustomerAppraisalInfo> ListCustomerAppraisal(int pageIndex, int pageSize, s ...