刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

38.过马路问题
在遥远的mars星球,即将入学的小精灵们正在学习过马路。它们需要请精灵学院的哥哥姐姐们的指导。
精灵学院共有C名学员(1≤C≤2000),编号为1...C,每名学员i愿意在时间Ti帮助小精灵。当前共有N名小精灵(1≤N≤2000),编号为1...N,其中小精灵j能够在时间Aj和时间Bj之间过马路。当前情况下,结伴过马路是最好的办法,每位小精灵j想找到一位学员i结伴过马路,i和j必须满足Aj≤Ti≤Bj。
每名学员最多只能结伴一名小精灵,每名小精灵最多结伴一名学员,请帮助计算可以得到的最大结伴数。
输入格式:
第一行输入包含C和N。
接下来C行包含T1 ... TC,
再接下来N行包含用于j = 1 ... N的Aj和Bj(Aj≤Bj)。 A,B和T都是不超过30000的正整数。
输入样例:
5 4
7
8
6
2
9
2 5
4 9
0 3
8 13
输出格式:
一共整数,表示精灵学院学员和小精灵的最大结伴数。
输出样例:
3
n,m= map(int, input().split())
t=[];a=[];b=[];h=[]
for i in range(1,n+1):
​ x=int(input())
​ t.append(x)
​ h.append(0)

for i in range(1,m+1):
​ ① = map(int, input().split())
​ a.append(x)
​ b.append(y)

t. ②
for i in range(m-1):
​ for j in range(m):
​ if((a[i]>a[j]) or (a[i]==a[j] and b[i]>b[j])):
​ a[i],a[j]=a[j],a[i]
​ ③
ans=0
for i in range(m):
​ for j in range(n):
​ if(t[j]>=a[i] and t[j]<=b[i] and h[j]==0):
​ ④
​ h[j]=1
​ break
​ if(t[j]>b[i]):
​ break
print(ans)

使用微信搜索喵呜刷题,轻松应对考试!

答案:

```pythonn, m = map(int, input().split())t = [0] * na = [0] * mb = [0] * mfor i in range(n):t[i] = int(input())for i in range(m):a[i], b[i] = map(int, input().split())t.sort()a.sort(key=lambda x: (x, b[x]))b.sort(key=lambda x: (x, a[x]))ans = 0for i in range(m):for j in range(n):if t[j] >= a[i] and t[j] <= b[i] and t[j] > t[ans]:ans = jbreakif t[j] > b[i]:breakprint(ans + 1)```

解析:

【喵呜刷题小喵解析】:

首先,我们读取输入数据,包括学员数量C、小精灵数量N,以及每个学员的可用时间T和每个小精灵的过马路时间范围A和B。

然后,我们初始化学员和小精灵的时间列表t、a和b,并将它们分别填充为输入数据。

接下来,我们对学员和小精灵的时间进行排序。对于学员,我们按照时间T进行排序;对于小精灵,我们按照开始时间A进行排序,如果A相同,则按照结束时间B进行排序。

然后,我们遍历每个学员,对于每个学员,我们遍历每个小精灵,检查小精灵的时间是否在学员的可用时间内,并且小精灵没有被其他学员选中。如果是,我们将小精灵标记为被选中,并找到时间最早的被选中的小精灵。最后,我们输出被选中的小精灵的数量加1。

需要注意的是,在检查小精灵的时间是否在学员的可用时间内时,我们需要确保小精灵的开始时间A小于等于学员的可用时间T,并且小精灵的结束时间B大于等于学员的可用时间T。如果小精灵的结束时间B大于学员的可用时间T,则我们不再考虑该学员。

另外,在遍历小精灵时,我们需要确保小精灵没有被其他学员选中,否则我们不再考虑该小精灵。

最后,我们输出被选中的小精灵的数量加1,因为在题目中要求输出的是精灵学院学员和小精灵的最大结伴数,而小精灵的数量就是最大结伴数。

注意,上述代码只是一个可能的实现方式,并不是唯一正确的实现方式。在实际编程中,我们需要根据题目的具体要求和输入数据的特性,选择最适合的算法和数据结构,以及最优的实现方式。
创作类型:
原创

本文链接:38.过马路问题在遥远的mars星球,即将入学的小精灵们正在学习过马路。它们需要请精灵学院的哥哥姐姐

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share