千帆杯第一期赛题:游乐场排队规划助手(香港迪士尼python解法)

简介: 千帆杯第一期赛题:游乐场排队规划助手(香港迪士尼python解法)



 

题目背景

随着春节假期来临,环球影城等热门主题游乐场成为大人孩子的经典过节选项,但巨大的人流也意味着排队成为游客最大的痛点,游乐场项目多、如何在有限的游玩时间内收获最大的快乐,是本期赛题要解决的问题

题目内容

官方提供「环球影城」、「上海迪士尼」、「香港迪士尼」、「广州长隆」四个热门游乐场地图(地图信息见下图list),地图中标注各项目的排队+游玩时间、视觉体验指数、刺激指数,每个项目最多玩一次,不考虑项目之间的交通时间

香港迪士尼

下图为娱乐内容:

数据表:

娱乐名称 排队+游玩时间(分钟) 视觉体验指数(分) 刺激指数(分)
小小世界 50 7 2
星战极速穿梭 40 8 10
钢铁奇侠飞行之旅 40 10 7
雪岭滑雪橇 60 7 6
小熊维尼历险之旅 50 6 4
蚁侠与黄蜂女 35 6 7
魔雪奇幻之旅 60 10 8
冲天遥控车 60 5 10
迷离大宅 55 6 7
灰熊山极速矿车 85 7 10

这里的数据表使用的是xlsx来存储的,名称可以在代码中看到【disneyland_projects.xlsx】,注意如果使用的是AI提问记得上传数据文件。

获取最大刺激指数算和

规定时间内获取最大刺激指数的python解法

import pandas as pd
# 文件确认和数据读取
try:
    data = pd.read_excel('disneyland_projects.xlsx')
    print("文件读取成功!")
except Exception as e:
    print(f"文件读取失败:{e}")
    exit()
# 时间转换
play_time = 5 * 60  # 5小时转换为分钟
# 动态规划算法应用
def knapsack(values, weights, capacity):
    n = len(values)
    dp = [[0 for _ in range(capacity + 1)] for _ in range(n + 1)]
    for i in range(1, n + 1):
        for w in range(1, capacity + 1):
            if weights[i - 1] <= w:
                dp[i][w] = max(dp[i - 1][w], dp[i - 1][w - weights[i - 1]] + values[i - 1])
            else:
                dp[i][w] = dp[i - 1][w]
    selected_items = []
    w = capacity
    for i in range(n, 0, -1):
        if dp[i][w] > dp[i - 1][w] and weights[i - 1] <= w:
            selected_items.append(i - 1)
            w -= weights[i - 1]
    return dp[n][capacity], [data.iloc[index]['娱乐名称'] for index in selected_items[::-1]]
# 提取刺激指数和游玩时间
stimulation_indices = data['刺激指数(分)'].tolist()
play_durations = data['排队+游玩时间(分钟)'].tolist()
# 计算最大刺激指数和对应的项目组合
max_stimulation, projects_combination = knapsack(stimulation_indices, play_durations, play_time)
# 结果输出
print(f"在限定时间内,最大的刺激指数总和为:{max_stimulation}")
print(f"对应的娱乐项目组合为:{', '.join(projects_combination)}")

最终结果:

我们为您计算在5个小时内能达到最大刺激指数的项目组合。在限定时间内,最大的刺激指数总和为 49 。对应的娱乐项目组合为:星战极速穿梭, 钢铁奇侠飞行之旅, 蚁侠与黄蜂女, 魔雪奇幻之旅, 冲天遥控车, 迷离大宅。这个组合将为您带来最刺激的游玩体验。

获取最大视觉指数和

规定时间内获取最大视觉指数的python解法

import pandas as pd
# 读取数据
df = pd.read_excel('disneyland_projects.xlsx')
# 提取必要的信息
projects = df['娱乐名称'].tolist()
times = df['排队+游玩时间(分钟)'].tolist()
visual_scores = df['视觉体验指数(分)'].tolist()
# 初始化动态规划表格
n = len(projects)
T = 120  # 总时间
dp = [[0] * (T + 1) for _ in range(n + 1)]
# 填充动态规划表格
for i in range(1, n + 1):
    for t in range(1, T + 1):
        if times[i - 1] <= t:
            dp[i][t] = max(dp[i - 1][t], dp[i - 1][t - times[i - 1]] + visual_scores[i - 1])
        else:
            dp[i][t] = dp[i - 1][t]
# 回溯找到选择的项目
selected_projects = []
t = T
for i in range(n, 0, -1):
    if times[i - 1] <= t and dp[i][t] > dp[i - 1][t]:
        selected_projects.append(projects[i - 1])
        t -= times[i - 1]
# 输出结果
print(f"在{T}分钟内,您可以获得的最大视觉体验指数是:{dp[n][T]}分。")
print(f"对应的娱乐项目组合是:{selected_projects[::-1]}。")

最终结果:

在限定的120分钟内,为了获得最大的视觉体验指数,推荐您选择以下娱乐项目组合:星战极速穿梭、钢铁奇侠飞行之旅和蚁侠与黄蜂女。这样的组合可以让您在120分钟内获得高达24分的视觉体验指数,为您的迪士尼之旅增添更多的视觉享受。

提问示例

1、游玩5个小时,玩哪些项目的组合刺激指数最大。

2、只有120分钟的时间,怎么玩视觉指数最大。

3、我现在只有4小时20分钟的时间,请问玩哪些项目最刺激?

这里别指望使用暴力,暴力是肯定超时的。

问题3结果:

在有限的4小时20分钟(即260分钟)内,若追求最大的刺激体验,推荐您选择以下娱乐项目:灰熊山极速矿车、迷离大宅、冲天遥控车和魔雪奇幻之旅。这些项目的组合将带给您高达44分的总刺激指数,让您在短暂的时间内充分感受到迪士尼乐园的惊险与刺激。

相关文章
|
3月前
|
存储 算法 Python
python 无重复字符的最长子串 多种解法
python 无重复字符的最长子串 多种解法
|
3月前
|
存储 算法 Python
python 算法 两数之和 的多种解法
python 算法 两数之和 的多种解法
|
13天前
|
JavaScript 前端开发 关系型数据库
旅游规划助手:结合Vue的交云性设计和Python的强大后端功能
【4月更文挑战第11天】本文探讨了如何使用Vue.js和Python(Flask或Django)构建旅游规划助手应用,简化旅行规划。首先,确保安装了Python、Node.js、数据库系统和Git。接着,介绍如何用Python搭建后端API,分别展示了Flask和Django的例子。然后,利用Vue.js初始化前端项目,结合Vuex和Vue Router构建用户界面。最后,通过Axios实现前端与后端的数据通信。这样的架构有利于团队协作和代码维护,便于扩展应用功能。
|
3月前
|
IDE Shell 开发工具
[oeasy]python0004_游乐场_和python一起玩耍_python解释器_数学运算
[oeasy]python0004_游乐场_和python一起玩耍_python解释器_数学运算
14 0
|
3月前
|
算法 Python
python 算法 两数相加多种解法
python 算法 两数相加多种解法
|
8月前
|
Python
【英】考虑多能负荷不确定性的区域综合能源系统鲁棒规划(Matlab&Python代码)
【英】考虑多能负荷不确定性的区域综合能源系统鲁棒规划(Matlab&Python代码)
|
4月前
|
开发者 索引 Python
【python刷题】LeetCode 2057E 值相等的最小索引(5种简单高效的解法)
【python刷题】LeetCode 2057E 值相等的最小索引(5种简单高效的解法)
26 0
|
9月前
|
算法 新能源 Python
多旋翼物流无人机节能轨迹规划(Python代码实现)
多旋翼物流无人机节能轨迹规划(Python代码实现)
124 0
|
9月前
|
算法 数据挖掘 机器人
【路径规划】基于RRT算法和改进人工势场法的无人机任务规划方法研究(Python代码实现)
【路径规划】基于RRT算法和改进人工势场法的无人机任务规划方法研究(Python代码实现)
249 0
|
8月前
|
存储 Python
考虑多能负荷不确定性的区域综合能源系统鲁棒规划(Matlab&Python代码)
考虑多能负荷不确定性的区域综合能源系统鲁棒规划(Matlab&Python代码)

热门文章

最新文章