博客
关于我
2020牛客暑期多校训练营(第八场)K.Kabaleo Lite(前缀和,高精)
阅读量:712 次
发布时间:2019-03-21

本文共 1315 字,大约阅读时间需要 4 分钟。

要解决这个问题,我们需要找到一个方法来确定能够容纳的最大顾客数以及在此情况下已能实现的最大利润。这个问题类似于寻找一个最优子序列,但我们需要确保菜品的编号是连续的。

思路分析

这个问题可以通过贪心算法来解决。我们的目标是找到一个长度为k的连续菜品序列,使得总利润最大化。虽然每位顾客至少要买一道菜,但为了利润最大化,我们可能需要跳过某些低利润的菜品。

  • 初始设定:我们首先设定第一道菜的利润总和。如果第一道菜的利润为负,仍然需要将其计入总利润,因为这是第一个顾客的利润。

  • 前缀和管理:我们需要维护前缀和的最小值。这是因为,如果某个前缀比前面更小,那么将更大的利润加到它上面可能比加到前面最小的前缀更优。这看起来有点复杂,但实际上,贪心策略告诉我们,只需要在每一步考虑当前的利润和前缀的最小值即可。

  • 动态更新:在每一步,我们计算当前利润,如果比之前的利润总和更大,我们就更新总利润,并记录最小前缀和。这样可以确保总利润最大化。

  • 最优解

    通过上述方法,我们可以逐步计算前缀和,保持最小前缀和,并更新总利润。这种方法的时间复杂度是O(n),非常高效。

    代码实现

    t = int(input())for _ in range(t):    n = int(input())    a = list(map(int, input().split()))    b = list(map(int, input().split()))        if n == 0:        print("Case #0: 0 0")        continue        max_profit = a[0] * b[0]    min_prefix = b[0]    ans = a[0]        for i in range(1, n):        current = a[i] * b[i]        current_profit = current + max_profit        if current_profit > ans:            delta = current_profit - ans            max_profit = max_profit + delta * min_prefix            ans = current_profit        elif current_profit > max_profit:            max_profit = current_profit        min_prefix = min(min_prefix, b[i])        print(f"Case #{_+1}: {b[0]} {max_profit}")

    结果展示

    该代码逐个处理每道菜,计算当前的利润,并更新总利润和前缀和的最小值。这样可以确保在所有可能的情况下,找到利润最大的连续菜品组合。

    每次处理一道菜,计算当前利润,如果比之前的总利润大,则更新总利润;如果不大,则更新前缀和的最小值。这种方法确保了在有限的时间内找到了最优解。

    转载地址:http://jpirz.baihongyu.com/

    你可能感兴趣的文章
    MySQL(2)DDL详解
    查看>>
    MySQL:MySQL执行一条SQL查询语句的执行过程
    查看>>
    Mysql:SQL性能分析
    查看>>
    MySQL:判断逗号分隔的字符串中是否包含某个字符串
    查看>>
    MySQL:某个ip连接mysql失败次数过多,导致ip锁定
    查看>>
    Mysql:避免重复的插入数据方法汇总
    查看>>
    n 叉树后序遍历转换为链表问题的深入探讨
    查看>>
    nacos config
    查看>>
    NacosClient客户端搭建,微服务注册进nacos
    查看>>
    Nacos原理
    查看>>
    Nacos在双击startup.cmd启动时提示:Unable to start embedded Tomcat
    查看>>
    Nacos如何实现Raft算法与Raft协议原理详解
    查看>>
    Nacos安装教程(非常详细)从零基础入门到精通,看完这一篇就够了
    查看>>
    nacos注册失败,Feign调用失败,feign无法注入成我们的bean对象
    查看>>
    nacos源码 nacos注册中心1.4.x 源码 nacos源码如何下载 nacos 客户端源码下载地址 nacos discovery下载地址(一)
    查看>>
    Nacos编译报错NacosException: endpoint is blank
    查看>>
    NACOS部署,微服务框架之NACOS-单机、集群方式部署
    查看>>
    Nacos配置中心集群原理及源码分析
    查看>>
    nacos配置自动刷新源码解析
    查看>>
    Nacos集群搭建
    查看>>