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.

尤其注意:

  1. 要注意计算最大个数,由于每天最多生产100个,所以不可能超过100/min(a,b,c);
  2. 枚举过程中要随时用当前变量控制下一层变量的取值范围。
  3. 去掉没有用的状态,比如前两个不够,第三个已经过多

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的更多相关文章

  1. Acer 4750G安装OS X 10.9 DP4(简版)

    一.下载os x 10.9懒人版:http://bbs.pcbeta.com/viewthread-1384504-1-1.html 二.用系统自带的磁盘分区工具划分一个5G左右的临时安装盘(新建分区 ...

  2. caioj 1080 动态规划入门(非常规DP4:乘电梯)(dp数组更新其他量)

    我一开始是这么想的 注意这道题数组下标是从大到小推,不是一般的从小到大推 f[i]表示从最高层h到第i层所花的最短时间,答案为f[1] 那么显然 f[i] = f[j] + wait(j) + (j ...

  3. vcf格式

    Variant Call Format(VCF)是一个用于存储基因序列突变信息的文本格式.表示单碱基突变, 插入/缺失, 拷贝数变异和结构变异等.BCF格式文件是VCF格式的二进制文件. CHROM ...

  4. samtools常用命令详解

    samtools的说明文档:http://samtools.sourceforge.net/samtools.shtmlsamtools是一个用于操作sam和bam文件的工具合集.包含有许多命令.以下 ...

  5. 16083001(古墓丽影GPA)

    [目标] 编译UNREALPORJECT2工程 [思路] 1 2 3 一件衣服23932个面 vs: // // Generated by Microsoft (R) HLSL Shader Comp ...

  6. WCF 编程实验室

    最近由于项目需要,简单研究了一下.NET WCF编程. 首先,简单说下WCF是什么,WCF 本质上,是一种开发框架.它用来开发类似COM+ .WEB SERVICE 这样“远程方法调用” 功能. 普通 ...

  7. 顶点着色器详解 (Vertex Shaders)

    学习了顶点处理,你就知道固定功能流水线怎么将顶点从模型空间坐标系统转化到屏幕空间坐标系统.虽然固定功能流水线也可以通过设置渲染状态和参数来改变最终输出的结果,但是它的整体功能还是受限.当我们想实现一个 ...

  8. Java NIO 之缓冲区

    缓冲区基础 所有的缓冲区都具有四个属性来 供关于其所包含的数据元素的信息. capacity(容量):缓冲区能够容纳数据的最大值,创建缓冲区后不能改变. limit(上界):缓冲区的第一个不能被读或写 ...

  9. Couchbase N1QL

    Couchbase的 N1QL已经DP4了,在官方的文档中,Select * From like-table 这个like-table实际上指的是Couchbase中Bucket,那么对于早起版本Co ...

随机推荐

  1. 2014年5月份第1周51Aspx源码发布详情

    郑州某高校学生考评系统源码  2014-5-5 [VS2008]功能介绍:   1.用户角色有部主任.教师.学生等.   2.可添加班级考评项目.学生考评项目.   3.可指定学生对班级.学生某考评项 ...

  2. (转)PhoneGap开发环境搭建

    (原)http://www.cnblogs.com/Random/archive/2011/12/28/2305398.html PhoneGap开发环境搭建   项目中要用PhoneGap开发,了解 ...

  3. android sdk 更新用的HOSTS

    74.125.113.121 developer.android.com203.208.46.146 www.google.com 203.208.46.146 dl.google.com 203.2 ...

  4. git-quick-start 动画讲解Git命令行

    来源:http://git.oschina.net/wzw/git-quick-start#git-quick-start git-quick-start 这是一个git的快速入门项目,使用一些gif ...

  5. A Brief Introduction to Markovs Chains

    本文译自A Brief Introduction to Markovs Chains 译者按: 前面一篇文章讲的是蒙特卡洛积分,也就是通过生成符合特定分布的随机变量来近似计算积分值,例如: \(E = ...

  6. 在yii中使用多个数据库

    背景: 对于一个大公司拥有多个分公司的应用场景下,我们通常需要配置多个sub-database(子数据库)来存储不同的数据纪录. 配置步骤: 1.在application骨架里面的主配置文件main. ...

  7. 黑马程序员——JAVA基础之正则表达式,网络爬虫

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 正则表达式: 概念:用于操作字符串的符合一定规则的表达式 特点:用于一些特定的符号来表示一些代码 ...

  8. 完成一段简单的Python程序,使用函数实现用来判断输入数是偶数还是奇数

    #!/bin/usr/env python#coding=utf-8'''完成一段简单的Python程序,使用函数实现用来判断偶数和奇数'''def number_deal(a): if a%2==0 ...

  9. 【python】and和or的用法

    python 中的and从左到右计算表达式,若所有值均为真,则返回最后一个值,若存在假,返回第一个假值. or也是从左到有计算表达式,返回第一个为真的值. IDLE 1.2.4>>> ...

  10. Unity3d外包公司 长年承接Unity3d项目外包

    承接Unity3d体感企业项目.游戏项目外包 北京公司.专业团队,成员为专业Unity3d产品公司一线开发人员,有大型产品开发经验: 提供优质的售后服务,保证产品质量,轻量级产品可以提供规范清晰的源代 ...