职业摆烂人


私信TA

用户名:uq_59495985965

访问量:6062

签 名:

等  级
排  名 892
经  验 3386
参赛次数 0
文章发表 18
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

c++统计子矩阵
浏览:1200
深搜c++ 题目陷阱
浏览:105
X进制减法c++
浏览:4213

解题思路:

记录第一只蚂蚁的位置和方向,因为速度都是一样的,所以在(蚂蚁前面&&方向相同的蚂蚁)||(蚂蚁后面&&方向相反的)一定不会被感染

                                                                                        if(蚂蚁前面&&面向运动)那么蚂蚁后面通向运动的也会被感染

所以只需统计蚂蚁运动方向上面对面运动的蚂蚁数和蚂蚁后方相同项运动的蚂蚁数,num=1为第一只,加b为面对面的蚂蚁数,c为通向后方的蚂蚁数

参考代码:

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    int n,k,a=0,b=0,c=0,num=1;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>k;
        if(i==0)    a=k;
        else if(a<0)        //第一只蚂蚁左走
        {
            if(k>0&&k<abs(a))   b++;    //在其左边向右走的蚂蚁数
            if(k<0&&abs(k)>abs(a))  c++;//在其右边向左走的蚂蚁数
        }
        else                //第一只蚂蚁右走
        {
            if(k<0&&abs(k)>a)   b++;    //在其右边向左走的蚂蚁数
            if(k>0&&abs(a)>k)  c++;     //在其左边向右走的蚂蚁数
        }
    }
    num+=b;
    if(b)   num+=c;
    cout<<num<<endl;
    return 0;
}


 

0.0分

0 人评分

  评论区