我想解决以下问题
一条街上有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的人。
以下是我的代码
选择 | 换行 | 行号
- for _ in range(int(input())):
- n=int(input())
- arr=list(map(int,input().split()))
- (m,c)=(1,1)
- for i in range(1,len(arr)):
- if(arr[i]-arr[i-1]<=2):
- c+=1
- m=c
- print(m,c)