Acwing---1211.蚂蚁感冒

news2024/9/27 10:57:11

蚂蚁感冒

  • 1.题目
  • 2.基本思想
  • 3.代码实现

1.题目

长 100 厘米的细长直杆子上有 n n n 只蚂蚁。

它们的头有的朝左,有的朝右。

每只蚂蚁都只能沿着杆子向前爬,速度是 1 厘米/秒。

当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。

这些蚂蚁中,有 1 只蚂蚁感冒了。

并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。

请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。
 

输入格式
第一行输入一个整数 n n n, 表示蚂蚁的总数。

接着的一行是 n n n 个用空格分开的整数 Xi, Xi 的绝对值表示蚂蚁离开杆子左边端点的距离。

正值表示头朝右,负值表示头朝左,数据中不会出现 0 值,也不会出现两只蚂蚁占用同一位置。

其中,第一个数据代表的蚂蚁感冒了。
 

输出格式
输出1个整数,表示最后感冒蚂蚁的数目。
 

数据范围
1 < n < 50 , 1<n<50, 1<n<50,
0 < ∣ X i ∣ < 100 0<|Xi|<100 0<Xi<100

输入样例:

3
5 -2 8

输出样例:

1

输入样例:

5
-10 8 -20 12 25

输出样例:

3

2.基本思想

当两只蚂蚁碰面时,它们同时掉头往相反的方向爬行就等价于两只蚂蚁相互穿过对方,由此不用管题目的掉头

在这里插入图片描述

可看出对于 左边蚂蚁向右 与 右边蚂蚁向左时,无论感染的蚂蚁朝向如何都不会被感染!因而只有两种情况可被感染。

在这里插入图片描述

因而仅需要考虑这两种情况,即蚂蚁感冒数 R L + L R + 1 (右边朝左与左边朝右外加自身 1 )否则为 1 因而仅需要考虑这两种情况,即 蚂蚁感冒数 RL+LR+1 (右边朝左 与 左边朝右 外加 自身1)否则为 1 因而仅需要考虑这两种情况,即蚂蚁感冒数RL+LR+1(右边朝左与左边朝右外加自身1)否则为1

3.代码实现

import java.util.Scanner;

import static java.lang.Math.abs;

public class _1211蚂蚁感冒 {
    static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
        int n = sc.nextInt();
        int a[] = new int[n];
        for (int i = 0; i < n; i++)
            a[i] = sc.nextInt();// a[i]   +:向右    -:向左
        //   左向右           右向左 蚂蚁的数量
        int leftToRight = 0, rightToLeft = 0;
        for (int i = 0; i < n; i++) {
            //如果在感冒蚂蚁的左边 且 方向向左
            if (abs(a[i]) < abs(a[0]) && a[i] > 0) leftToRight++;
            //如果在感冒蚂蚁的右边 且 方向向左
            else if (abs(a[0]) < abs(a[i]) && a[i] < 0) rightToLeft++;
        }

        //判断是否存在 感冒蚂蚁右 且有右向左的蚂蚁   冒蚂蚁向左 且有左向右的蚂蚁
        if ((a[0] > 0 && rightToLeft > 0) || (a[0] < 0 && leftToRight > 0)) {
            System.out.println(leftToRight + rightToLeft + 1);
        } else
            System.out.println(1);//本身感染
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/150873.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言基本数据类型(一)

文章目录 前言 一、int类型 二、八进制和十六进制 三、其他整数类型 四、char 类型 五、_Bool 类型 六、 可移植类型&#xff1a;stdint.h和unttypes.h 前言 C语言基本数据类型包括声明变量、如何表示字面值常量&#xff0c;以及经典的用法。 一、int类型 C语言中包括许…

【openGauss】在openEuler(ARM架构)上安装openGauss(一主一备)

一、系统版本介绍 当前案例中的openGauss安装&#xff0c;底层操作系统为openEuler-20.03-LTS版本&#xff0c;当前openGauss对Python版本兼容性最好的是Python 3.6版本与Python 3.7版本&#xff0c;该实验使用的openEuler版本自带Python 3.7.4&#xff0c;不需要再自行安装 二…

零基础如何入门网络安全?2023年最新,建议收藏!

前言 最近收到不少关注朋友的私信和留言&#xff0c;大多数都是零基础小友入门网络安全&#xff0c;需要相关资源学习。其实看过的铁粉都知道&#xff0c;之前的文里是有过推荐过的。新来的小友可能不太清楚&#xff0c;这里就系统地叙述一遍。 01.简单了解一下网络安全 说白…

前端必会手写面试题合集

实现Event(event bus) event bus既是node中各个模块的基石&#xff0c;又是前端组件通信的依赖手段之一&#xff0c;同时涉及了订阅-发布设计模式&#xff0c;是非常重要的基础。 简单版&#xff1a; class EventEmeitter {constructor() {this._events this._events || ne…

电力系统IEEE33节点Simulink仿真研究(Matlab实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f389;作者研究&#xff1a;&#x1f3c5;&#x1f3c5;&#x1f3c5;主要研究方向是电力系统和智能算法、机器学…

arduino基本知识认识和学习资源

个人对ardunio的感觉 **像是一个模块化功能的单片机&#xff0c;编程时在单片机中就像python在计算机语言的感觉。**硬件方面的功能比较单一依赖于传感器和硬件电路&#xff1b;编程比较简单&#xff0c;所有执行的函数都已经被封装&#xff0c;所以想要成为第一个用这个库吃瓜…

【C语言刷题】猜名次、猜凶手、杨辉三角、杨氏矩阵、字符串左旋、判断是否为左旋子串

目录 一、猜名次 二、猜凶手 三、杨辉三角 解法一&#xff1a; 解法二 四、杨氏矩阵 解法一 解法二 五、字符串左旋 解法一 解法二 六、判断是否为字符串左旋字串 解法一 解法二 总结 一、猜名次 5位运动员参加了10米台跳水比赛&#xff0c;有人让他们预测比赛结果…

基于轻量级CNN开发构建学生课堂行为识别系统

其实早在之前&#xff0c;我的一些文章里面就有做过关于学生课堂行为检测识别的项目&#xff0c;感兴趣的话可以自行移步阅读&#xff1a;《yolov4-tiny目标检测模型实战——学生姿势行为检测》《基于yolov5轻量级的学生上课姿势检测识别分析系统》这些主要是偏目标检测类的项目…

Raft论文阅读

Raft 论文阅读 参考&#xff1a; Raft Paper 一文搞懂Raft算法 - xybaby Raft Demo Raft 实现汇总 Raft 为什么是更易理解的分布式一致性算法 空挡) Raft协议实现之etcd(一)&#xff1a;基本架构 Raft 协议 - buttercup 【raft】学习二&#xff1a;etcd/raft raft数据结构学…

第四十八讲:神州路由器IPv6静态路由配置

实验拓扑图如下所示 配置步骤&#xff1a; 步骤1&#xff1a;配置R1接口 R1_config#ipv6 unicast-routing //启用IPv6路由 R1_config#in g0/4 R1_config-_g0/4#ipv6 address 2001:10::1/64 //手工配置IPv6地址 R1_config-…

LInux背景【Linux】

一、技术推动社会发展的基本动力作为万物之长的人类&#xff0c;我们相较于其他的生物哪里是特殊的&#xff1f;举一个例子&#xff1a;老虎需要几千上万年进化来的爪子&#xff0c;人类可以在更短的时间内通过制造石矛石斧这类工具变可以模拟。通过这一个例子我们得出——人的…

python自学之《21天学通Python》(7)

第10章 Python进阶话题 10.1 函数与命名空间 Python中可以通过模块来管理复杂的程序&#xff0c;而将不同功能的函数分布在不同的模块中&#xff0c;那么函数及其全局命名空间决定了函数中引用全局变量的值。函数的全局命名空间始终是定义该函数的模块&#xff0c;而不是调用该…

java面试之Spring篇

一、Spring概述 1. Spring由哪些模块组成 spring core&#xff1a;提供了框架的基本组成部分&#xff0c;包括控制反转&#xff08;Inversion of Control&#xff0c;IOC&#xff09;和依赖注入&#xff08;Dependency Injection&#xff0c;DI&#xff09;功能。spring beans…

windows无线连接Linux服务器,实现终端操作与文件传输

0、建议安装完Ubuntu后按照百问网的设置安装必要的linux软件 执行&#xff1a; git clone https://e.coding.net/weidongshan/DevelopmentEnvConf.git cd DevelopmentEnvConf sudo ./Configuring_ubuntu.sh 等待安装完成&#xff0c;大约半个小时事件。 我搭建的环境 家…

git的使用

一、创建仓库 gitee官网创建好用户之后&#xff0c;我们点创建仓库。 选择好语言&#xff0c;开源许可证随便选一个即可&#xff0c;模板我们最好设置一个Readme文件&#xff0c;方便后面写明仓库的介绍。 分支模型我们新手选一个单分支模型就可以了。 因为仓库创建的时候只能…

Windows下Canal.admin-1.1.6安装部署

一、下载解压 1 下载 进入页面&#xff1a;Release v1.1.6 alibaba/canal GitHub 下载 canal.admin-1.1.6.tar.gz 2 解压 解压至目录&#xff1a;D:\Tools\canal.admin-1.1.6 二、创建数据库 canal_manager 1 创建时间数据库&#xff1a;canal_manager 2 初始化元数据…

并发编程学习案例-模拟抢红包

一、前言 再来系统动手学习一下Java并发编程。 知识点&#xff1a;CountDownLatch 的发令枪使用模式&#xff1b;红包均分&#xff0c;最后一个分不完的解决方法 抢红包的需求,每个红包均分&#xff0c;最后一个除外 1. 设置红包总额 2. 设置红包的个数 3. 模拟抢红包的人数 &a…

图文结合带你搞懂MySQL日志之relay log(中继日志)

GreatSQL社区原创内容未经授权不得随意使用&#xff0c;转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本&#xff0c;使用上与MySQL一致。作者&#xff1a; KAiTO文章来源&#xff1a;GreatSQL社区原创 什么是中继日志&#xff08;relay log&#xff09; 中继日志&a…

线程,协程,异步编程模型

线程,协程,异步编程模型 1.线程编程模型 我们知道线程是 cpu 调度的基本单位。 如果是一个单核的cpu, 而且现在有3个线程需要执行。那么可能是 线程 1, 2, 3 通过 cpu分片&#xff0c; 轮流执行。 那么 如果不将 cpu 进行分片&#xff0c; 而是 线程 1,2,3 轮流执行&#x…

Springboot中如何优雅的写好controller层代码

前言优雅&#xff1f;看到这个词&#xff0c;我第一反应是什么是优雅&#xff1f;怎么写才算优雅&#xff1f;一千个读者有一千个哈姆雷特&#xff0c;每个人的经验、阅历不同&#xff0c;也许理解就不同。我对优雅的理解很简单&#xff0c;就是简洁有效、容易理解&#xff0c;…