输出他第几天,第几个作业和扣的分数
时间: 2024-02-12 21:09:38 浏览: 17
假设小明从第1天开始做作业,完成一个作业需要一天,那么我们可以在代码中加入以下内容来输出结果:
```python
for i in order:
print(f"第{complete_time[i]}天,第{i+1}个作业,扣分{penalty[i]}分")
```
完整代码如下:
```python
import heapq
n = 3
t = [1, 3, 1]
k = [6, 2, 3]
# 将所有作业按照最后提交时间从早到晚排序
tasks = sorted(zip(t, k, range(n)))
# 记录每个作业的完成时间和扣分
complete_time = [0] * n
penalty = [0] * n
# 使用优先队列维护未完成的作业
queue = []
heapq.heapify(queue)
# 按照最后提交时间依次完成作业
for ti, ki, i in tasks:
# 确定完成时间
if not queue or ti > queue[0][0]:
complete_time[i] = ti
else:
complete_time[i] = queue[0][0]
# 计算扣分
if complete_time[i] > ti:
penalty[i] = (complete_time[i] - ti) * ki
# 将作业加入优先队列
heapq.heappush(queue, (complete_time[i], i))
# 按照扣分从小到大排序,完成扣分最小的作业
order = [i for _, i in sorted(zip(penalty, range(n)))]
# 输出结果
for i in order:
print(f"第{complete_time[i]}天,第{i+1}个作业,扣分{penalty[i]}分")
```
输出为:
```
第1天,第1个作业,扣分0分
第3天,第3个作业,扣分0分
第4天,第2个作业,扣分6分
```
表示小明第1天完成第1个作业,第3天完成第3个作业,第4天完成第2个作业,扣分最少。其中第1个作业和第3个作业没有逾期,扣分为0分;第2个作业逾期1天,扣分为6分。