题目描述
解题思路
第一次尝试的解题思路是设置一个数组,然后每次循环然他们各走一步碰头了就取反也就是掉头。但是这样很难确认感染人数。
第二次解题时就想,当两只蚂蚁碰头时,另一只没被感染的会被感染所以不如当做那只感染的并没有掉头而是两只蚂蚁都擦肩而过。
这样,初始感染的蚂蚁就会朝他的初始方向一路感染,而被他感染的蚂蚁也会朝他自己的方向一路感染。所以分下面两种情况:
1.当蚂蚁在初始感染者的右边那么他向左走一定会被感染
2.当蚂蚁在初始感染者的左边那么他向右走一定会被感染
代码
n=int(input())
a=list(map(int,input().strip().split()))
sick=abs(a[0])
left,right=0,0
for i in range(1,n):
if abs(a[i])>sick and a[i]<0:
# 当蚂蚁在初始感染者的右边那么他向左走一定会被感染
left+=1
if abs(a[i])<sick and a[i]>0:
# 当蚂蚁在初始感染者的左边那么他向右走一定会被感染
right+=1
if a[0]>0 and left==0:
# 特殊情况第一只蚂蚁向右、而右边也全部向右
print(1)
exit()
if a[0]<0 and right==0:
# 特殊情况第一只蚂蚁向右、而右边也全部向右
print(1)
exit()
print(left+right+1)