今天写了一道二维背包问题;下面转强大的牛人的一大段话。

问题

二维费用的背包问题是指:对于每件物品,具有两种不同的费用;选择这件物品必须同时付出这两种代价;对于每种代价都有 一个可付出的最大值(背包容量)。问怎样选择物品可以得到最大的价值。设这两种代价分别为代价1和代价2,第i件物品所需的两种代价分别为a[i]和 b[i]。两种代价可付出的最大值(两种背包容量)分别为V和U。物品的价值为w[i]。

算法

费用加了一维,只需状态也加一维即可。设f[i][v][u]表示前i件物品付出两种代价分别为v和u时可获得的最大价值。状态转移方程就是:

f[i][v][u]=max{f[i-1][v][u],f[i-1][v-a[i]][u-b[i]]+w[i]}

如前述方法,可以只使用二维的数组:当每件物品只可以取一次时变量v和u采用逆序的循环,当物品有如完全背包问题时采用顺序的循环。当物品有如多重背包问题时拆分物品。这里就不再给出伪代码了,相信有了前面的基础,你能够自己实现出这个问题的程序。

物品总个数的限制

有时,“二维费用”的条件是以这样一种隐含的方式给出的:最多只能取M件物品。这事实上相当于每件物品多了一种“件数 ”的费用,每个物品的件数费用均为1,可以付出的最大件数费用为M。换句话说,设f[v][m]表示付出费用v、最多选m件时可得到的最大价值,则根据物 品的类型(01、完全、多重)用不同的方法循环更新,最后在f[0..V][0..M]范围内寻找答案。

复数域上的背包问题

另一种看待二维背包问题的思路是:将它看待成复数域上的背包问题。也就是说,背包的容量以及每件物品的费用都是一个复 数。而常见的一维背包问题则是实数域上的背包问题。(注意:上面的话其实不严谨,因为事实上我们处理的都只是整数而已。)所以说,一维背包的种种思想方法,往往可以应用于二位背包问题的求解中,因为只是数域扩大了而已。

作为这种思想的练习,你可以尝试将P11中提到的“子集和问题”扩展到复数域(即二维),并试图用同样的复杂度解决。

小结

当发现由熟悉的动态规划题目变形得来的题目时,在原来的状态中加一纬以满足新的限制是一种比较通用的方法。希望你能从本讲中初步体会到这种方法。

初始化的细节问题

我们看到的求最优解的背包问题题目中,事实上有两种不太相同的问法。有的题目要求“恰好装满背包”时的最优解,有的题目则并没有要求必须把背包装满。一种区别这两种问法的实现方法是在初始化的时候有所不同。

如果是第一种问法,要求恰好装满背包,那么在初始化时除了f[0]为0其它f[1..V]均设为-∞,这样就可以保证最终得到的f[N]是一种恰好装满背包的最优解。

如果并没有要求必须把背包装满,而是只希望价格尽量大,初始化时应该将f[0..V]全部设为0。

为什么呢?可以这样理解:初始化的f数组事实上就是在没有任何物品可以放入背包时的合法状态。如果要求背包恰好装满,那么此时只有容量为0的背包可能被价值为0的nothing“恰好装满”,其它容量的背包均没有合法的解,属于未定义的状态,它们的值就都应该是-∞了。如果背包并非必须被装满,那么 任何容量的背包都有一个合法解“什么都不装”,这个解的价值为0,所以初始时状态的值也就全部为0了。

我的

{ 这个问题中叔叔买m部电影给duoduo看,而且要求duoduo要看完,否则价值为0,所以此处的背包的m轴向必须装满,所以sum【k】【0】=0;而其他的值赋值为负无穷,

如果不能满足加上value【i】为第k部电影且前面k-1都装满电影,则为负值。

}

#include<iostream>
#include<string>
using namespace std;
int time_table[150],value[150],sum[1050][110];
int n,m,l;
void twodemenpack()
{  
    for(int i=1;i<=n;i++)
for(int k=l;k>=time_table[i];k--)
     for(int j=m;j>=1;j--)
   if(time_table[i]<=l)
      sum[k][j]=max(sum[k][j],sum[k-time_table[i]][j-1]+value[i]);
}
int main()
{  int t;
   const int N=999999;
   cin>>t;
   for(int i=0;i<t;i++)
   {  cin>>n>>m>>l;
      for(int k=1;k<=n;k++)
 cin>>time_table[k]>>value[k];
for(int i=0;i<=l;i++)
for(int k=0;k<=m;k++)
  if(k==0)
sum[i][k]=0;
  else sum[i][k]=-N;
 twodemenpack();
 if(sum[l][m]<0)
 cout<<"0"<<endl;
 else
 cout<<sum[l][m]<<endl;
   }
return 0;
}

hud Watch The Movie相关推荐

  1. 汽车HUD(Head-up Display)的技术难点

    汽车HUD(Head-up Display)的技术难点 首先解析一下HUD是什么原理吧.其实就是把车的前挡风玻璃当成反射镜,在驾驶员人眼前投射一个仪表盘的虚像.图像本身来自下方的电子发光屏,发出仪表盘 ...

  2. 两行代码搞定iOS自定义HUD风格动画弹窗(支持选择记录) - SKChoosePopView的使用和实现思路

    作者 ShevaKuilin 关注 2017.03.25 18:28* 字数 2014 阅读 270评论 0喜欢 23 さらい屋五葉 原文地址----> MyBlog HUD风格的选项弹窗是我们 ...

  3. osg中实现HUD(OSG初级篇1)

    HEAD-UP DISPLAY, 即是抬头显示功能,在opengl编程中,我们有时需要一种屏幕区域,这个区域并不会随着三维场景视角表换而发生改变,也可以讲,是在三维场景中实现了一个二维子场景,故常用来 ...

  4. hud抬头显示器哪个好_还在看汽车仪盘表?带你了解一下HUD抬头显示器,开车很方便...

    一直以来,抬头显示功能在汽车当中都是一个可望而不可及的配置,因为它只配备在豪华品牌汽车当中,而这些车型的价位动辄大几十万元,并不是谁都可以消费得起的.那么抬头显示功能到底为什么如此被豪车青睐呢? 在介 ...

  5. SKChoosePopView 一个HUD风格的可定制化选项弹窗的快速解决方案

    原文地址----> MyBlog HUD风格的选项弹窗是我们在日常开发中经常会碰到的一类需求,通常因为项目周期等因素,很少会专门抽出时间来对此类弹窗进行专门的定制开发和维护.常见的情况就是goo ...

  6. OSG的HUD抬头文字显示

    原文:http://blog.csdn.net/tmljs1988/article/details/7562926 可以运行 1.       HUD流程图: 完整源代码如下: /*OSG中的HUD, ...

  7. wince怎么刷carplay_Carplay支持仪表/HUD显示 宝马为全球超750000辆车发布OTA升级

    [太平洋汽车网 新车频道]日前,宝马官方宣布,将从10月19日起为全球超过750000辆汽车提供iDrive 7.0最新版本的最重要的一次OTA升级.据悉,这项升级将有多项新功能加入,并重点支持App ...

  8. 获取显示器的唯一编号_宝马奔驰才配拥有的HUD抬头显示器,买菜车也能无损安装!...

    其实现在许多中高端车(壕车)已经开始标配或者可以选配抬头显示器,比如宝马现在全系好像都可以选配,我朋友有一台X3就带HUD,听说选配HUD时追加了1.3万.那HUD有什么作用呢?没用过的人可能会说装X ...

  9. 登和平视显示无法连接服务器,提醒信息的推送方法和装置、平视显示器HUD及服务器...

    1.一种提醒信息的推送方法,应用于车辆上的显示装置,其特征在于,所述方法包括: 接收预设服务器发送的与所述车辆相匹配的目标订单的订单信息,其中所述订单信息用于指示所述车辆的订单状态: 确定与所述订单状 ...

  10. android hud sdk,Android HUD SDK | 百度地图API SDK

    简介 为了给用户提供更安全优质的服务,LBS开放平台针对Android平台的SDK产品引入Key认证机制,用户在使用之前需要先申请配置Key,并在程序相应位置填写您的Key. Key机制:每个Key仅 ...

最新文章

  1. 高级程序设计 c语言 在线作业,[北京师范大学]19秋《高级程序设计(C)》离线作业(资料)...
  2. 2017.4.2号总结
  3. Linux_DHCPDHCP Relay
  4. xml解析案例:一个简单的学生管理系统
  5. host文件知识详解
  6. docker ps命令详解 列出运行中的容器
  7. 5918. 统计字符串中的元音子字符串
  8. 【C语言】fgets函数返回值
  9. CSS特性:white-space: nowrap;text-overflow: ellipsis;text-decoration: none
  10. Next.js 服务端渲染框架实战
  11. ping包优化版本python
  12. 同步计数器 CountDownLatch
  13. php 音频上传之ogg格式,如何快速将MP3格式转化成ogg格式
  14. 利用牛顿迭代法求平方根
  15. java.lang.IllegalArgumentException: Not an managed type
  16. 7-32 哥尼斯堡的“七桥问题” c语言
  17. fiddler手机下载证书提示No root certificate was found. Have you enabled HTTPS traff 解决方法 及手机配置代理后无网络问题
  18. [1.2.0新功能系列:二] Apache Doris 1.2.0 JDBC外表 及 Mutil Catalog
  19. 水晶苍蝇拍-微薄投资感悟
  20. 如何向天翼云服务器上传文件,天翼云储存上传文件的方法

热门文章

  1. 京东无人超市的成长之路 | 如何利用人工智能技术在零售业做产品创新?
  2. 老李谈HTTP1.1的长连接 1
  3. 【雅思阅读】王希伟阅读P4(matching2段落信息配对题【困难】)
  4. CAN 网络故障诊断
  5. 信号与系统、数字信号处理、滤波、傅里叶变换、数字信号模拟信号采样信号、滤波器零阶保持器
  6. 网页html5播放器,一个强大的开源HTML5视频播放器,字节出品
  7. Java开源CMS系统罗列
  8. SpringBoot整合Mybatis未打成jar正常运行,打成jar包,TypeAliases配置失败致使mybatis无法找到实体类的问题
  9. Widget是一切,Widget简介
  10. 杨振宁李政道分手内幕