Acwing 1211. 蚂蚁感冒(数学)

解题思路
把所有相遇的蚂蚁都看作路过,而不是交换方向
//最开始感染蚂蚁不管左右,右边的蚂蚁往左走,左边的蚂蚁往右走都会被感染
//因为总会与其他被感染的蚂蚁相撞
//而那些在感染蚂蚁相撞之前就相撞,其实可以无视(视为直接路过)
代码
#include<iostream>
using namespace std;
const int N=55;
int s[N];
int main(){
//不管左右,右边的蚂蚁往左走,左边的蚂蚁往右走都会被感染,
//因为总会与其他被感染的蚂蚁相撞
//而那些在感染蚂蚁相撞之前就相撞,其实可以无视(视为直接路过)
int n;
cin>>n;
for(int i=0;i<n;i++)cin>>s[i];
int left=0,right=0;
for(int i=1;i<n;i++){
if(abs(s[i])<abs(s[0])&&s[i]>0)left++;
if(abs(s[0])<abs(s[i])&&s[i]<0)right++;
}
if((s[0]>0&&right==0)||(s[0]<0&&left==0))cout<<1;
else cout<<left+right+1;
return 0;
}
747

被折叠的 条评论
为什么被折叠?



