5月6日动态规划测试解题报告

5月6日动态规划测试解题报告

第一题:免费馅饼

Problem description:

都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内。馅饼如果掉在了地上当然就不能吃了,所以gameboy马上卸下身上的背包去接。但由于小径两侧都不能站人,所以他只能在小径上接。由于gameboy平时老呆在房间里玩游戏,虽然在游戏中是个身手敏捷的高手,但在现实中运动神经特别迟钝,每秒种只有在移动不超过一米的范围内接住坠落的馅饼。现在给这条小径如图标上坐标:

为了使问题简化,假设在接下来的一段时间里,馅饼都掉落在0-10这11个位置。开始时gameboy站在5这个位置,因此在第一秒,他只能接到4,5,6这三个位置中其中一个位置上的馅饼。问gameboy最多可能接到多少个馅饼?(假设他的背包可以容纳无穷多个馅饼).

解题思路

:这道题目可以用动态规划做,转移方程如下:f[i][j]=max{f[i][j],f[i-1][j-1],f[i-1][j+1]}.(f[i][j]表示第i秒第j个位置可以接到的最多馅饼).

第二题:I need an offer

Problem description:

Speakless很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材料,于是,便需要去申请学校了。要申请国外的任何大学,你都要交纳一定的申请费用,这可是很惊人的。Speakless没有多少钱,总共只攒了n万美元。他将在m个学校中选择若干的(当然要在他的经济承受范围内)。每个学校都有不同的申请费用a(万美元),并且Speakless估计了他得到这个学校offer的可能性b。不同学校之间是否得到offer不会互相影响。“I NEED AN OFFER”,他大叫一声。帮帮这个可怜的人吧,帮助他计算一下,他可以收到至少一份offer的最大概率。(如果Speakless选择了多个学校,得到任意一个学校的offer都可以)。

解题思路:

这道题目可以转换成01背包问题,然而这道题目还涉及到数学中概率的问题,我们可以假设他同时向两所学校申请,录取概率分别为a,b则他没被录取的概率(1-a)(1-b),那么他被录取的概率是1-(1-a)(1-b),所以我们只需要求他没有被录取的概率再用1减去就是被录取的概率了,转移方程如下:f[j]=max{f[j],1-(1-f[j-c[i]])*(1-w[i])}
f[j]表示分析完上一所学校之后j万元能够获取的最大被录取概率
f[j-c[i]]为除去i所学校的申请费之后,用剩余的钱能被录取最大概率。

第三题:搬寝室

Problem description:
搬寝室是很累的,xhd深有体会.时间追述2006年7月9号,那天xhd迫于无奈要从27号楼搬到3号楼,因为10号要封楼了.看着寝室里的n件物品,xhd开始发呆,因为n是一个小于2000的整数,实在是太多了,于是xhd决定随便搬2*k件过去就行了.但还是会很累,因为2*k也不小是一个不大于n的整数.幸运的是xhd根据多年的搬东西的经验发现每搬一次的疲劳度是和左右手的物品的重量差的平方成正比(这里补充一句,xhd每次搬两件东西,左手一件右手一件).例如xhd左手拿重量为3的物品,右手拿重量为6的物品,则他搬完这次的疲劳度为(6-3)^2 = 9.现在可怜的xhd希望知道搬完这2*k件物品后的最佳状态是怎样的(也就是最低的疲劳度),请告诉他吧.

解题思路

: 给定n个物品,每个物品有重量,从中选出m对,使得这m对物品重量差的平方和最小。则疲劳度为m对物品重量差的平方和。所以我们先对n中物品的重量排序,用f[i][j]表示前i个物品中选j对物品的最小疲劳度,则f[i][j]可能含有第i个物品.则f[i][j]=f[i-2][j-1]+(v[i]-v[i-1])(v[i]-v[i-1]);f[i][j]的j对物品也可能不含有第i个物品,此时有f[i][j]=f[i-1][j]。所以状态转移方程为:f[i][j] = min(f[i-2][j-1]+(v[i]-v[i-1])(v[i]-v[i-1]),f[i-1][j])

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值