026346EEA340AB7BB9A719B7B968C0B8.jpg
参考代码:

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    /* 1.蚂蚁移动碰面后转向可以理解为穿行,也就是继续沿着原来方向移动,
    不在意转向问题,区别在于,没有感染的蚂蚁相遇状态不变,相当于没有碰面,和没有碰面一样;
    而被感染的蚂蚁在碰面后,两者状态都是被感染,其余不需要在乎。
    具体可以看有个大佬画的图的题解,这样碰面后就只会影响是否被感染*/
    
    /*2.那么理解这个思维后,问题就简单了,所有蚂蚁都不会转向,如图这些蚂蚁会被感染*/
    int n;
    cin>>n;
    // 用数组装初始蚂蚁位置
    int a[50];
    int count=1;
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    for(int i=1;i<n;i++){
        // 注意位置的绝对值是距离杆子左端的距离,不要直接比较
        // 感染源向左,感染蚂蚁=所有向右且位置绝对值比感染源小的+向左同时位置绝对值比感染源大
        if(a[0]<0&&a[i]>0&&fabs(a[i])<fabs(a[0])||a[0]<0&&a[i]<0&&fabs(a[i])>fabs(a[0])){
            count++;
        }
        // 感染源向右,感染蚂蚁=所有向左且绝对值比感染源大的+向右同时位置绝对值比感染源小
        if(a[0]>0&&a[i]<0&&fabs(a[i])>a[0]||a[0]>0&&a[i]>0&&a[i]<a[0]){
            count++;
        }
    }
    cout<<count;
    return 0;
}


点赞(0)
 

0.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论