思想:
- 蚂蚁相遇,感染并调头<=>蚂蚁相遇穿过彼此,感染
- 第一只被感染的蚂蚁M向右走:
- ①M左边向左走:不受影响
- ②M右边向右走:不受影响
- ③M左边向右走:
I. 若M右边有向左走的,则必感染 II. 若M右边没有向左走的,则不受影响 - ④M右边向左走:必感染
同理,
- 第一只感染的蚂蚁M向左走:
- ①M右边向右走/M左边向左走:不受影响
- ②M右边向左走:
I. 若M左边有向右走的,则必感染 II. 若M左边没有向右走的,则不受影响 - ③M左边向右走:必感染
问题的关键:M左边向右走+M右边向左走 的蚂蚁
题目:
#include <bits/stdc++.h>
using namespace std;
int x[55];
int main(){
int n;
cin >> n;
for(int i=0;i<n;i++) cin >> x[i];
int left=0,right=0;
for(int i=1;i<n;i++){
if(abs(x[i])<abs(x[0])&&x[i]>0) left++;
else if(abs(x[i])>abs(x[0])&&x[i]<0) right++;
}
if(x[0]>0&&right==0||x[0]<0&&left==0) cout << 1;
else cout << left+right+1;
return 0;
}
END
|