首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 同时有两个背包的动态规划问题,求思路!!!!!
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cthliao
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-08-21 11:25:31 楼主
    【问题描述】
    在《Harry Potter and the Chamber of Secrets》中,Ron的魔杖因为坐他老爸的Flying Car撞到了打人柳,不幸被打断了,从此之后,他的魔杖的魔力就大大减少,甚至没办法执行他施的魔咒,这为Ron带来了不少的烦恼。这天上魔药课,Snape要他们每人配置一种魔药(不一定是一样的),Ron因为魔杖的问题,不能完成这个任务,他请Harry在魔药课上(自然是躲过了Snape 的检查)帮他配置。现在Harry面前有两个坩埚,有许多种药材要放进坩埚里,但坩埚的能力有限,无法同时配置所有的药材。一个坩埚相同时间内只能加工一种药材,但是不一定每一种药材都要加进坩埚里。加工每种药材都有必须在一个固定的起始时间和固定的结束时间内完成(起始时间所在的那一刻和结束时间所在的那一刻也算在完成时间内),每种药材都有一个加工后的药效。现在要求的就是Harry可以得到最大的药效。

    【输入】
    输入文件的第一行有2个整数,一节魔药课的t(1≤t <≤500)和药材数n(1≤n≤100)。
    输入文件第2行到n+1行中每行有3个数字,分别为加工第i种药材的起始时间t1、结束时间t2、(1≤t1≤t2≤t)和药效w(1≤w≤100)。

    【输出】
    输出文件medic.out只有一行,只输出一个正整数,即为最大药效。

    【输入样例】
    7 4
    1 2 10
    4 7 20
    1 3 2
    3 7 3

    【输出样例】
    35
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dlyme
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 5

      2

    发表于:2008-08-21 13:16:401楼 得分:0
    将所有药材按照结束时间由小到大排序,每种药材的开始时间记为S(i)、结束时间为E(i),这里1 <=i <=n
    用dp(T1,T2,i)来表示第一个坩埚在T1之前、第二个坩埚在T2时间之前,对于前面i种药材能够得到的最大药效。
    状态转移方程:
    dp(T1,T2,i)=max{dp(T1,T2,i-1),dp(S(i)-1,T2,i-1)(如果E(i) <=T1才考察这个值),dp(T1,S(i)-1,i-1)(如果E(i) <=T2才考察这个值)}

    很容易理解:第i种药材要么不用、要么放在第一个锅里、要么放在第二个锅里。最佳方案就是这三者的最大值。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • majiajun_no_9
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-09-25 17:15:262楼 得分:0
    拜访楼主
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved