1211. 蚂蚁感冒
摘要
Title: 1211. 蚂蚁感冒
Tag: 思维
Memory Limit: 64 MB
Time Limit: 1000 ms
Powered by:NEFU AB-IN
1211. 蚂蚁感冒
-
题意
长 100 厘米的细长直杆子上有 n 只蚂蚁。
它们的头有的朝左,有的朝右。
每只蚂蚁都只能沿着杆子向前爬,速度是 1 厘米/秒。
当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。
这些蚂蚁中,有 1 只蚂蚁感冒了。
并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。
请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。 -
思路
ps: 两个蚂蚁碰到后掉头,可以理解成两个蚂蚁互换,代替对方继续走
-
第一只蚂蚁不管方向朝哪里,只要它右边的蚂蚁向左走就可能碰撞感染,同样,第一只蚂蚁左边的蚂蚁只要朝右边走也可能被感染,这样就很容易得到。这里表示左边蚂蚁向右走的数量,表示右边蚂蚁向左走的数量,是指第一只蚂蚁本身。
-
还有一种特殊情况,就是当第一只蚂蚁向左走的时候,如果第一只蚂蚁左边没有向右爬行的蚂蚁,由于爬行速度相同,所以不管第一只蚂蚁右边有多少向左爬行的,其右边的蚂蚁永远不可能被感染。同理,当第一只蚂蚁向右走的时候,如果第一只蚂蚁右边没有向左爬行的蚂蚁,其左边也永远不可能感染。
-
-
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24'''
Author: NEFU AB-IN
Date: 2022-03-23 16:31:59
FilePath: \ACM\Acwing\1211.py
LastEditTime: 2022-03-23 16:31:59
'''
N = 55
a = [0] * N
n = int(input())
a = list(map(int, input().split()))
l, r = 0, 0
for i in range(1, n):
if abs(a[0]) < abs(a[i]) and a[i] < 0:
r += 1
if abs(a[0]) > abs(a[i]) and a[i] > 0:
l += 1
if (a[0] > 0 and r == 0) or (a[0] < 0 and l == 0):
print(1)
else:
print(r + l + 1)