1.相遇后不用考虑转头,继续走就可以
2.思维,不只是傻傻的模拟,要总结出规律,什么情况一定可以感染,然后感染之后再怎么这么样
P8611 [蓝桥杯 2014 省 AB] 蚂蚁感冒 - 洛谷
#include<bits/stdc++.h>
using namespace std;
#define N 100011
typedef long long ll;
typedef pair<int,int> pii;
vector<int> over;
vector<int> gm;
int a[N],n;
bool bo[N];
bool g[N];
int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}if(a[1]<=0)///分两种情况 {int c=0,d=0;for(int i=2;i<=n;i++){if(abs(a[i])<abs(a[1])&&a[i]>0) c++;///一定可以相遇 if(abs(a[i])>abs(a[1])&&a[i]<0) d++; } if(c>0)///遇到之后激活另一部分 {cout<<c+d+1;}else cout<<1;}else{int c=0,d=0;for(int i=2;i<=n;i++){if(abs(a[i])>abs(a[1])&&a[i]<0) c++;///一定可以相遇 if(abs(a[i])<abs(a[1])&&a[i]>0) d++; } if(c>0)///遇到之后激活另一部分 {cout<<c+d+1;}else cout<<1;}return 0;
}