当前位置: 首页 > 编程笔记 >

在C++中减少菜肴

寇涵容
2023-03-14
本文向大家介绍在C++中减少菜肴,包括了在C++中减少菜肴的使用技巧和注意事项,需要的朋友参考一下

假设有个厨师。并且他收集了有关他的n道菜的满意度的数据。厨师可以在1个单位时间内烹饪任何菜肴。菜的喜欢时间系数实际上是花费的时间

烹饪该菜肴(包括以前的菜肴)乘以其满意程度,即时间[i] *满意度[i]。

我们必须找到厨师在准备菜后可以获得的最大喜欢时间系数总和。可以以任何顺序准备菜肴,厨师可以丢弃一些菜肴以获得最大值。

因此,如果输入像[-1,-7,0,6,-7],则输出将为17,除去第二和最后一道菜后,最大总相似时间系数将为-1 * 1 + 0 * 2 + 6 * 3 = 17。

为了解决这个问题,我们将遵循以下步骤-

  • 定义大小为505 x 505的数组dp。

  • 定义一个函数solve(),它将使用idx,时间,数组v,

  • 如果idx与v的大小相同,则-

    • 返回0

  • 如果dp [idx,time]不等于-1,则-

    • 返回dp [idx,时间]

  • ret:= -inf

  • ret:=求解(idx + 1,时间,v)和v [idx] *时间+求解(idx + 1,时间+ 1,v)的最大值

  • dp [idx,time]:= ret

  • 返回ret

  • 从主要方法中执行以下操作-

  • 用dp填充-1

  • 对数组v排序

  • 返回solve(0,1,v)

让我们看下面的实现以更好地理解-

示例

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int dp[505][505];
   int solve(int idx, int time, vector <int>& v){
      if(idx == v.size()) return 0;
      if(dp[idx][time] != -1) return dp[idx][time];
      int ret = INT_MIN;
      ret = max(solve(idx + 1, time, v), v[idx] * time + solve(idx
      + 1, time + 1, v));
      return dp[idx][time] = ret;
   }
   int maxSatisfaction(vector<int>& v) {
      memset(dp, -1, sizeof(dp));
      sort(v.begin(), v.end());
      return solve(0, 1, v);
   }
};
main(){
   Solution ob;
   vector<int> v = {-1,-7,0,6,-7};
   cout << (ob.maxSatisfaction(v));
}

输入项

{-1,-7,0,6,-7}

输出结果

17
 类似资料:
  • 问题内容: 在JSF中减小viewstate隐藏字段大小的最佳方法是什么?我已经注意到,我的视图状态大约为40k,这会下降到客户端,并在每次请求和响应(尤其是到达服务器)时都返回到服务器,这对于用户来说是一个严重的问题。 我的环境JSF 1.2,MyFaces,Tomcat,战斧,RichFaces 问题答案: 您是否尝试过将状态保存设置为服务器?这应该仅将ID发送给客户端,并在服务器上保持完整状

  • 在我的项目中,我使用Java中Vert.x的实现。到目前为止一切都很顺利。然而,目前我有问题执行一个动作的对象列表顺序。问题在于方法在Java中分别“reduce”和“sombining”结果。这将导致所有操作同时启动。实现顺序执行是可能的,可以在方法中看到这一点。 执行Easy时的输出: 和的输出与Java代码的easy方法相同。我正在寻找的是一种修复Java中reduce方法的方法,或者一种实

  • 我试图减少一个双精度字符的数量。我如何减少这一点: 到 这是斯威夫特的吗?

  • 我的MySQL中有一个InnoDB表,它存储产品的当前库存,每当产品售出时(总是按单位,即总是-1),库存就必须更新,比如说: 现在,我正在使用Hibernate,因此我通过将currentStock属性的值设置为“currentValue -1”来更新对象ProductStock,如下所示: 现在,我正在使用事务来提交更改,但是我不确定当同时进行多次销售时Hibernate会做什么,并且我无法成

  • 我运行jmeter脚本将近一周,今天观察到一件有趣的事情。以下是场景: 概述:我正在逐渐增加应用程序的负载。在上一次测试中,我给应用程序加载了100个用户,今天我将加载增加到150个用户。 150名用户测试结果: > 与上次测试相比,请求的响应时间减少了。(这是个好兆头) 吞吐量急剧下降到上一次测试的一半,负载更少。 我的问题是: > 当我的许多请求失败时,我得到了好的响应时间吗? 注:直到100

  • 我在一个应用程序里工作。这个应用程序在Android7.x.x中运行,但当我尝试在Android5.x.x中运行这个应用程序时,这个应用程序崩溃了。我认为这是因为是API25。当我尝试将其更改为API21(Android5)时,我出现了一些错误。我可以在Android5中对我的应用工作做些什么? PS:我不知道这款应用在Android6中是否有效,但很可能是不行的。 Build.Gradle: 执