【问题标题】:Find the time for more than K customers present in the hotel [closed]为酒店内超过 K 位顾客寻找时间[关闭]
【发布时间】:2021-03-20 01:24:52
【问题描述】:

如果在任何给定时刻酒店内有超过 K 个顾客,则该时间段称为 P 期。

任务是确定P周期

输入格式 第一行包含 n 和 k,接下来的 n 行包含第 i 个客户的入住和退房时间 测试用例:

3 2
5 8
2 4
3 9

输出:4

如果我没记错的话,我们必须找出目前有超过 K 个客户在场的时间。 我的代码

def hotel(n,k,A):
    count=0
    dp=[1]*n
    for i in range(n):
        I1=A[i][0]
        o1=A[i][1]
        time=[]
        for j in range(i+1,n):
            I2=A[j][0]
            o2=A[j][1]
            if I1>=I2 and I1<o2:
                dp[i]=dp[i]+1
                if o1<=o2:
                    time.append(o1-I1)
                else:
                    time.append(o2-I1)
            elif I1<I2 and o1>I2:
                dp[i]=dp[i]+1
                if o1>o2:
                    time.append(o2-I2)
                else:
                    time.append(o1-I2)
        if dp[i]>=k:
            count+=sum(time)
    return count

问题它显示错误的代码答案 谁能帮忙。

【问题讨论】:

  • 你能举一个你的代码给出错误答案的例子吗?请更具体。
  • 我没有更多的测试用例。
  • 请提供预期的minimal, reproducible example。显示中间结果与您的预期不同的地方。我们应该能够复制和粘贴您的代码的连续块,执行该文件,并重现您的问题以及跟踪问题点的输出。这让我们可以根据您的测试数据和所需的输出来测试我们的建议。您发布的代码定义了一个函数并退出而不执行。您还没有展示任何自己跟踪问题的工作。
  • 其实问题来自我提交的hackerearth比赛。我只是想知道我在这个问题上哪里出错了
  • 你能解释一下为什么你的测试用例会得到4吗?或者可能一个 P 期对应于等于或大于 K 的客户数量。

标签: python algorithm data-structures genetic-algorithm


【解决方案1】:

示例结果 (4) 表明我们正在寻找至少有 K(不超过)个客户在场的总天数。问题陈述也没有指定结帐日期是否包含在周期中(这对该数据给出了相同的答案,但在其他样本上可能会有所不同)。

在任何情况下,您都可以使用列表推导和求和来计算这些值:

n = 3
K = 2
A = [(5,8),(2,4),(3,9)]

checkIns,checkOuts = zip(*A)
firstDay  = min(checkIns)
lastDay   = max(checkOuts)
counts    = [ sum(day in range(inTime,outTime) for inTime,outTime in A)
              for day in range(firstDay,lastDay+1) ]
P         = sum(count >= K for count in counts)
print(P) # 4

counts 列表是通过查看每一天并计算每天有多少客户在场而构建的。计算给定日期的客户会通过签入/签出时间(A)来检查该天是否在客户的存在期内。

注意:以上range(inTime,outTime) 假定不包括退房日。如果要包含它们,请将其更改为 range(inTime,outTime+1)

【讨论】:

  • @Damien,您当然是对的,我并没有这样做。我将变量名称更改为天而不是小时,以避免将来混淆。
  • 我在我的代码中也做了同样的事情
猜你喜欢
  • 2012-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多