我想解决以下问题

一条街上有N个人(从1到N)。为简单起见,我们将它们视为一条线上的点。对于每个有效的i,第i个人的位置是xi。
事实证明,这些人中正好有一人感染了新冠肺炎病毒,但我们不知道是哪一人。只要两个人之间的距离不超过2,病毒就会从感染者传播到非感染者。如果我们等待足够长的时间,特定的一组人(取决于最初感染的人)将被感染;让我们称这组人的大小为最终感染人数。
你的任务是找到最终感染人数的最小值和最大值,即在最好和最坏情况下的这个数字。
输入
输入的第一行包含一个表示测试用例数量的整数T。下面是T测试用例的描述。
每个测试用例的第一行包含单个整数N。
第二行包含N个空格分隔的整数X1、X2、0、XN。
输出
对于每个测试案例,打印一行包含两个空格分隔的整数--最小和最大可能的最终感染人数。
制约因素
1≤T≤2,000
2个≤N≤8
每个有效i对应0≤Xi≤10
X1
子任务
子任务1(10分):N≤3
子任务#2(90分):原始约束
示例输入
3.
2.
3 6
3.
1 3 5
5.
1 2 5 6 7
输出示例
1 1
3 3
2 3
解释:
例1:两个人之间的距离是3,所以病毒不会传播,最终总是只有一个感染者。
例2:每两个相邻的人之间的距离是2,所以他们最终都会被感染。
案例3示例:
在最好的可能情况之一中,位置1的人最初被感染,病毒也将感染位置2的人。
在可能最糟糕的情况之一中,位置5的人最初被感染,病毒也会感染位置6和7的人。
以下是我的代码

选择 | 换行 | 行号
  1. for _ in range(int(input())):
  2.     n=int(input())
  3.     arr=list(map(int,input().split()))
  4.     (m,c)=(1,1)
  5.     for i in range(1,len(arr)):
  6.         if(arr[i]-arr[i-1]<=2):
  7.             c+=1
  8.     m=c        
  9.     print(m,c)    
  10.  
  11.  
# 回答1


你有什么问题吗?
# 回答2


我现在想知道如何对以下问题进行编码
# 回答3


清点并跟踪彼此距离2以内的所有人群。跟踪这些区块的大小。三个最小和最大的区块就是答案。

标签: python

添加新评论