【Python训练营】Python每日一练----第32天:答疑

简介: 【Python训练营】Python每日一练----第32天:答疑


![在这里插入图片描述](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/071536a96838427d9f73b3954ebeefc9~tplv-k3u1fbpfcp-zoom-1.image)

> 📢📢📢📣📣📣

  >  🌻🌻🌻Hello,大家好我叫是Dream呀,一个有趣的Python博主,多多关照😜😜😜

  >  🏅🏅🏅2021年度博客之星TOP100,2021年度博客之星领域TOP5,Python领域优质创作者,欢迎大家找我合作学习(文末有VX 想进学习交流群or学习资料 欢迎+++)

  > 💕` 入门须知:这片乐园从不缺乏天才,努力才是你的最终入场券!🚀🚀🚀`

  > 💓`最后,愿我们都能在看不到的地方闪闪发光,一起加油进步🍺🍺🍺`

  > 🍉🍉🍉“一万次悲伤,依然会有Dream,我一直在最温暖的地方等你”,唱的就是我!哈哈哈~🌈🌈🌈

  > 🌟🌟🌟✨✨✨

>


# 题目描述

题目描述

有 n 位同学同时找老师答疑。每位同学都预先估计了自己答疑的时间。

老师可以安排答疑的顺序,同学们要依次进入老师办公室答疑。 一位同学答疑的过程如下:

首先进入办公室,编号为 i 的同学需要 si毫秒的时间。

然后同学问问题老师解答,编号为 ii 的同学需要 ai毫秒的时间。

答疑完成后,同学很高兴,会在课程群里面发一条消息,需要的时间可 以忽略。

最后同学收拾东西离开办公室,需要 ei毫秒的时间。一般需要 10 秒、20 秒或 30 秒,即 e i取值为10000,20000或 30000。

一位同学离开办公室后,紧接着下一位同学就可以进入办公室了。

答疑从 0 时刻开始。老师想合理的安排答疑的顺序,使得同学们在课程群 里面发消息的时刻之和最小。

**输入描述**

输入第一行包含一个整数 n,表示同学的数量。

接下来 n 行,描述每位同学的时间。其中第 ii 行包含三个整数 s_i, a_i, e_i,意义如上所述。

其中有 ,1 ≤ n ≤ 1000,1 ≤ s_i ≤ 60000,1 ≤ a_i ≤ 10^6, e_i ∈ {10000, 20000, 30000}即 e_i一定是10000、20000、30000 之一。

**输出描述

输出一个整数,表示同学们在课程群里面发消息的时刻之和最小是多少。**

```python

输入输出样例

示例

输入

3

10000 10000 10000

20000 50000 20000

网络异常,图片无法展示
|

📢📢📢📣📣📣 🌻🌻🌻Hello,大家好我叫是Dream呀,一个有趣的Python博主,多多关照😜😜😜 🏅🏅🏅2021年度博客之星TOP100,2021年度博客之星领域TOP5,Python领域优质创作者,欢迎大家找我合作学习(文末有VX 想进学习交流群or学习资料 欢迎+++) 💕 入门须知:这片乐园从不缺乏天才,努力才是你的最终入场券!🚀🚀🚀 💓最后,愿我们都能在看不到的地方闪闪发光,一起加油进步🍺🍺🍺 🍉🍉🍉“一万次悲伤,依然会有Dream,我一直在最温暖的地方等你”,唱的就是我!哈哈哈~🌈🌈🌈 🌟🌟🌟✨✨✨

前言:【Python训练营】是针对Python语言学习所打造的一场刷题狂欢party! 对基础知识把握不牢固的话,欢迎参考此套课程:Python公开课 搭配使用最佳嗷~喜欢的话就抓紧订阅起来吧!🍋🍋🍋如果对学习没有自制力或者没有一起学习交流的动力,欢迎私信或者在文末添加我的VX,我会拉你进学习交流群,我们一起交流学习,报团打卡

@TOC

题目描述

题目描述 有 n 位同学同时找老师答疑。每位同学都预先估计了自己答疑的时间。

老师可以安排答疑的顺序,同学们要依次进入老师办公室答疑。 一位同学答疑的过程如下: 首先进入办公室,编号为 i 的同学需要 si毫秒的时间。 然后同学问问题老师解答,编号为 ii 的同学需要 ai毫秒的时间。 答疑完成后,同学很高兴,会在课程群里面发一条消息,需要的时间可 以忽略。 最后同学收拾东西离开办公室,需要 ei毫秒的时间。一般需要 10 秒、20 秒或 30 秒,即 e i取值为10000,20000或 30000。 一位同学离开办公室后,紧接着下一位同学就可以进入办公室了。 答疑从 0 时刻开始。老师想合理的安排答疑的顺序,使得同学们在课程群 里面发消息的时刻之和最小。

输入描述 输入第一行包含一个整数 n,表示同学的数量。 接下来 n 行,描述每位同学的时间。其中第 ii 行包含三个整数 s_i, a_i, e_i,意义如上所述。 其中有 ,1 ≤ n ≤ 1000,1 ≤ s_i ≤ 60000,1 ≤ a_i ≤ 10^6, e_i ∈ {10000, 20000, 30000}即 e_i一定是10000、20000、30000 之一。

输出描述 输出一个整数,表示同学们在课程群里面发消息的时刻之和最小是多少。

输入输出样例
示例
输入
3
10000 10000 10000
20000 50000 20000
30000 20000 30000
输出
280000

解题思路

  1. 创建list1去存储总的值,总值越小就放到最前面,创建list2去存储每一个我们输入的三个元素
  2. 列表形式存储三个值,将总的值存储在list1中,将三个时间都存储在list2列表中,同时将list1按顺序进行排序ist1.sort()
  3. time1将每个人的前两个必须要相加的时间先求出来
  4. time2将时间和从小到大进行倍数运算,例如有n个同学,第一个最小的时间,肯定要在以后的n-1个时间中都需要出现;第二个最小的时间,要在以后的n-2个时间中都出现,以此类推。
for i in list1:
    time2 += i*(a-1)  # time2将时间和从小到大进行倍数运算,
    # 例如有n个同学,第一个最小的时间,肯定要在以后的n-1个时间中都需要出现;第二个最小的时间,要在以后的n-2个时间中都出现,以此类推
    a -= 1  # 同时要注意别忘了将a进行缩值

源码分享

# @Time : 2022/3/8 14:48
# @Author : 是Dream呀
# @File : 答疑.py
a = int(input())
list1 = []  # 创建list1去存储总的值,总值越小就放到最前面
list2 = []  # 创建list2去存储每一个我们输入的三个元素
for i in range(a):
    shijian = list(map(int, input().split()))  # 列表形式存储三个值
    list1.append(sum(shijian))  # 将总的值存储在list1中
    list2.append(shijian)  # 将三个时间都存储在list2列表中
list1.sort()  # 将list1按顺序进行排序
time1 = 0  
time2 = 0
for i in range(a):
    time1 += (list2[i][0]+list2[i][1])  # time1将每个人的前两个必须要相加的时间先求出来
for i in list1:
    time2 += i*(a-1)  # time2将时间和从小到大进行倍数运算,
    # 例如有n个同学,第一个最小的时间,肯定要在以后的n-1个时间中都需要出现;第二个最小的时间,要在以后的n-2个时间中都出现,以此类推
    a -= 1  # 同时要注意别忘了将a进行缩值
print(time1+time2)

学习总结

🏅今天是我在Python训练营的第 32 天,希望每天都能见到最棒的你🏅

🌲🌲🌲 好啦,这就是今天要分享给大家的全部内容了 ❤️❤️❤️如果你喜欢的话,就不要吝惜你的一键三连了~
网络异常,图片无法展示
|
网络异常,图片无法展示
|

目录
相关文章
|
4月前
|
Python 人工智能
讯飞星火、文心一言和通义千问同时编“贪吃蛇”游戏,谁会胜出?
讯飞星火、文心一言和通义千问同时编“贪吃蛇”游戏,谁会胜出?
53 1
讯飞星火、文心一言和通义千问同时编“贪吃蛇”游戏,谁会胜出?
|
4月前
|
Shell Unix Linux
Linux 终端命令之文件浏览(3) less
Linux 终端命令之文件浏览(3) less
32 0
Linux 终端命令之文件浏览(3) less
|
4月前
|
Rust
Rust 编程小技巧摘选(8)
Rust 编程小技巧摘选(8)
93 0
Rust 编程小技巧摘选(8)
|
4月前
|
算法 C++ 机器人
力扣 C++|一题多解之动态规划专题(1)
力扣 C++|一题多解之动态规划专题(1)
43 0
力扣 C++|一题多解之动态规划专题(1)
|
4月前
|
C++ Python 索引
Python Numpy入门基础(二)数组操作
Python Numpy入门基础(二)数组操作
29 0
Python Numpy入门基础(二)数组操作
|
4月前
|
C++ 存储
力扣C++|一题多解之数学题专场(1)
力扣C++|一题多解之数学题专场(1)
23 0
力扣C++|一题多解之数学题专场(1)
|
4月前
|
Java Go C++
Golang每日一练(leetDay0118) 扁平化嵌套列表迭代器、整数拆分
Golang每日一练(leetDay0118) 扁平化嵌套列表迭代器、整数拆分
30 0
Golang每日一练(leetDay0118) 扁平化嵌套列表迭代器、整数拆分
|
4月前
|
Java Go C++
Golang每日一练(leetDay0114) 矩阵中的最长递增路径、按要求补齐数组
Golang每日一练(leetDay0114) 矩阵中的最长递增路径、按要求补齐数组
36 0
Golang每日一练(leetDay0114) 矩阵中的最长递增路径、按要求补齐数组
|
3天前
|
JSON 数据格式 开发者
pip和requests在Python编程中各自扮演着不同的角色
`pip`是Python的包管理器,用于安装、升级和管理PyPI上的包;`requests`是一个HTTP库,简化了HTTP通信,支持各种HTTP请求类型及数据交互。两者在Python环境中分别负责包管理和网络请求。
16 5
|
6天前
|
存储 Python 容器
Python高级编程
Python集合包括可变的set和不可变的frozenset,用于存储无序、不重复的哈希元素。创建集合可使用{}或set(),如`my_set = {1, 2, 3, 4, 5}`。通过add()添加元素,remove()或discard()删除元素,如`my_set.remove(3)`。