hud Watch The Movie

2024-04-02 17:08
文章标签 watch hud movie

本文主要是介绍hud Watch The Movie,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

问题

二维费用的背包问题是指:对于每件物品,具有两种不同的费用;选择这件物品必须同时付出这两种代价;对于每种代价都有 一个可付出的最大值(背包容量)。问怎样选择物品可以得到最大的价值。设这两种代价分别为代价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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/870562

相关文章

GDB watch starti i files

watch break starti 在程序的最初开始运行的位置处断下来 ​​ i files 查看程序及加载的 so 的 sections ​​

apple watch

1:  需要蓝牙连接到iPhone才可以打电话 不然他就是一个表(网络  手机)    是全新的不到2000  全新5s也就3000多点 2:  现在最新的是 IOS8, 但视频时IOS5.0的,(移动设备)  MAc是。。。 清明节: 1:  请我吃套餐, people’s squire 2: 为啥你不知道:买个菠萝, 梁伟   法国人送2个苹果   教师

百万豪车同款!上半年交付暴涨5倍,AR HUD强攻20万以下车型

作为人车交互的新窗口,AR HUD的潜能还在不断凸显。 8月初,问界M9通过OTA升级新增AR HUD观影功能,通过三指滑动,能够轻松实现AR HUD与三联屏之间的无缝流转,支持75英寸投射沉浸观看。 这也意味着,继取代仪表盘、融合中控屏和辅助驾驶系统信息等之后,AR HUD的娱乐功能潜能逐步被挖掘。同时,更大的呈现空间、虚像距离,也对AR HUD配套的软件平台和算法提出更高要求。 高工智能

class 4: vue.js 3监听器 watch

某些情况下需要监听某个响应式数据的变化,这时就需要使用监听器(watch)来实现了 watch的使用语法如下 选项:watch类型:{ [key: string]: string | Function | Object | Array}详解:watch属性是一个对象,该对象的键(key)是需要观察的表达式, 值(value)可以是回调函数、方法名等。Vue.js 3实例会在实例化时调用$wat

elementUI——checkbox复选框监听不到change事件,通过watch监听来解决——基础积累

今天在写后台管理系统的时候,遇到一个需求,就是要求监听复选框的change事件,场景就是:两个复选框互斥,且可以取消勾选。 就是这两个复选框可以同时都不勾选,如果勾选的话,另一个一定要取消勾选。 通过checkbox组件的change事件,是无法触发的。 可以通过watch来监听解决此问题。 比如上面的两个复选框值分别是:checked和cateChecked,可以通过监听每个值得变化

vue3使用-watch监听总结

watch watch(attr, (val1, val2) => {}, {deep: true, immediate: true, flush: 'post', once: true, onTrack / onTrigger}) attr: 基本类型可以直接监听,引用类型需要用函数返回监听(不能直接侦听响应式对象的属性值),可以监听多个 (newVal1, oldVal) => {}:

npm run watch-poll

使用 webpack 自动编译时,出现异常,日志: [root@vm shop]# npm run watch-poll> @ watch-poll /home/www/shop> npm run watch -- --watch-poll> @ watch /home/www/shop> npm run development -- --watch "--watch-poll"> @ de

Vue 3.5 中的 base watch 函数与 Vue 模块化设计探索

在 Vue.js 的发展历程中,每一个版本的更新都带来了新特性和性能优化,而 Vue 3.5-beta.3 引入的 base watch 函数,虽然名字上听起来像是传统 watch API 的基础版本,但实际上它标志着 Vue 内部架构的一次重要调整。这次调整不仅影响了 Vue 的内部实现,也为开发者和下游项目如 Vue Mini 带来了新的机遇和挑战。 Vue 3 的模块化

CodeBlocks调试没有watch窗口

1、当在View->Perspectives->GDB/CDB debugger:Default,watch窗口不显示,只在下方的Debugger区域用文字显示变量的类型和值 2、在View->Perspectives->Code::Blocks default时,watch窗口可以显示

Keil5 Debug模式Watch窗口添加的监控变量被自动清除

Keil5 Debug模式Watch窗口添加的监控变量被自动清除 问题解决记录 问题描述:每次进入Debug模式时,watch窗口里面上一次调试添加的监控变量都会被全部清掉 如图: 退出Debug模式后,重新进入Debug模式: 解决方法: 打开魔术棒窗口的Debug页面: 将箭头所指的复选框勾上,每次进入Debug模式都会恢复Watch窗口中上一次设置好的监控变量。