• Kick Start 2018


    1. Yogurt

    Q:给定N份酸奶,每份都有一个截止日期A[i],过期的酸奶 不能喝。每天最多只能喝K个。问什么策略可以喝到最多份酸奶。
    A:

    1. 想法:先sort截止日期,然后往后遍历。走一个判断一个。复杂度是O(nlogn)
    2. 改进:创建一个数组,数组内是当天过期的酸奶量,第一天过期放第一天,第二天过期放第二天,>N天过期的放最后一天(桶排序)。从后往前遍历,后面的多的酸奶可以在最后一天喝完后放到前一天。复杂度是O(n)

    2. Milk Tea

    Q:给定N个二进制数,二进制数长度为P,求出一个二进制数使得其和N个二进制数的complaint之和最小。complaint=不相同的bit的个数。另外有M个constraint,求出的二进制数不能出现在constraint中。
    A:
    思路:

    1. 用一个长度为P的数组,每一位存储里面有多少个当前位为1的数;
    2. 使用DP,存入每次为0或为1产生的cost。
    best = [[0,""]] # [[cost, type]]
    for i in xrange(P):
          cur = []
          for cost, typ in best: # 对于前一位已经算完的每一种type
                cur.append([cost + cost_of_option[i], typ+'0']) # cost加上为0时产生的complaint,记录当前typ+‘0’
                cur.append([cost + N - cost_of_option[i], typ+'1']) # cost加上为1时产生的complaint,记录当前typ+‘1’
          best = sorted(cur)[:,101] # 按照cost排序,由于M最大为100,前101位至少能有一个不在constraint中
          # 在best中找到第一个不属于constraint的值
    
  • 相关阅读:
    Go开发环境搭建
    es入门小结
    Python操作ES
    mongodb
    RBAC-基于角色的访问控制 django缓存、信号、xadmin使用
    drf序列化群增、群改、群删
    drf过滤、分页、全局异常处理
    VS配置IISExpress外部IP访问
    Oracle中tnsping命令解析
    oracle导入Excel数据文件(大量数据)处理方法
  • 原文地址:https://www.cnblogs.com/xym4869/p/13263244.html
Copyright © 2020-2023  润新知