蚂蚁感冒 刷题笔记

news2024/10/25 0:30:52

/*
解题思路

首先根据题意可知  
1.蚂蚁速度均为1  即同向蚂蚁永远不可能追上
我们需要求最后感冒蚂蚁的数量
因为蚂蚁碰头将会掉头
效果和俩蚂蚁互相穿过继续走是一样的
所以我们将俩蚂蚁碰头视作穿过
2.
如果俩蚂蚁相向而行 则俩蚂蚁必定碰头

 
首先 我们获得第一个感冒蚂蚁的位置和方向
开始第一次遍历 找该蚂蚁左边是否存在可以被感冒的蚂蚁 
并且标记一个mask 
用来记录该蚂蚁左边是否存在向右走的蚂蚁 
如果第一个蚂蚁向左走  
且该蚂蚁的左边存在向右走的蚂蚁 
  每遇到一个向右走的蚂蚁则 计数器+1
并且 一旦这个向左走的蚂蚁遇到一个向右的蚂蚁
将mask标记做一个修改 
此时我们就获得了向右走的感冒蚂蚁 

然后我们开始第二次搜索 
找该蚂蚁右边是否存在可以被感冒的蚂蚁
首先如果刚刚的mask被修改过
则存在向右走的感冒蚂蚁
为了计数的方便我们将碰头视作穿过
但实际是反向 因此第一只向右走的感冒蚂蚁的位置实际是a[0]的位置
于是我们第二次搜索条件就是 位置在a[0]右边且向左走的蚂蚁
遇到一只则计数器++;


如果第一只蚂蚁向右左则对称分析即可

*/ 

代码

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=110;
int a[N];
int cnt=1;
int main(){
    
    int n;
    cin>>n;
    cin>>a[0];
    bool mask=true;
    int mask2=0;
    if(a[0]<0){
            a[0]=-a[0];
            mask=false;
        
        for(int i=1;i<n;i++){
            cin>>a[i];
            if((mask==false)&&a[i]>0&&a[i]<a[0]){
                cnt++;
                mask2=1; 
                //cout<<"1++"<<endl<<a[i]<<endl;
            }
            
        }
        for(int i=1;i<n;i++){
            if(mask2==1&&a[i]<0&&abs(a[i])>a[0]){
                cnt++;
                ///cout<<"2++"<<endl<<a[i]<<endl;;
            }
            
        }
    }else{
        for(int i=1;i<n;i++)
        {
            cin>>a[i];
            if(a[i]<0&&abs(a[i])>a[0]){
                mask2=1;
                cnt++;
            }
        } 
        for(int i=1;i<n;i++)
        {
            
            if(mask2==1&&a[i]>0&&abs(a[i])<a[0]){
                cnt++;
                
            }
        } 
    }
    cout <<cnt;
    return 0;
}
 

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

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

相关文章

Requests教程-15-文件上传与下载

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 上一小节&#xff0c;我们学习了requests的HTTPS请求方法&#xff0c;本小节我们讲解一下在requests文件上传与下载。 文件上传 使用requests库上传文件时&#xff0c;需要使用files参数&#xff0c;并将文件打…

IDEA 配置文件乱码,项目编码设置

见下图 其中第一二项控制全局以及工程的编码格式&#xff0c;下方的则是 properties 配置文件的格式&#xff0c;统一调整为 UTF-8 后不再乱码

【Python学习篇】Python基础入门学习——你好Python(一)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;Vir2021GKBS &#x1f43c;本文由…

Android制作.9图回忆

背景 多年前&#xff0c;做app开发遇到IM需求&#xff0c;那会用到.9图做聊天气泡背景&#xff0c;现在总结下使用png图片制作.9图。方法有很多&#xff0c;这里主要介绍Android studio制作.9图。当然使用ps、draw9patch都行。 第一步、打开Android studio&#xff0c;切换到dr…

stm32学习笔记:I2C通信协议原理和软件I2C读写MPU6050

概述 第一块&#xff1a;介绍协议规则&#xff0c;然后用软件模拟的形式来实现协议。 第二块&#xff1a;介绍STM32的iic外设&#xff0c;然后用硬件来实现协议。 程序一现象&#xff1a;通过软件I2C通信&#xff0c;对MPU6050芯片内部的寄存器进行读写&#xff0c;写入到配…

Linux安装代理

Linux安装代理 1.下载安装包2.进行解压3.点击运行4.进行配置5.设置系统网络 1.下载安装包 2.进行解压 3.点击运行 4.进行配置 导入链接 5.设置系统网络 测试运行是否成功

迭代器失效问题(C++)

迭代器失效就是迭代器指向的位置已经不是原来的含义了&#xff0c;或者是指向的位置是非法的。以下是失效的几种情况&#xff1a; 删除元素&#xff1a; 此处发生了迭代器的失效&#xff0c;因为erase返回的是下一个元素的位置的迭代器&#xff0c;所以在删除1这个元素的时候&…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:浮层)

设置组件的遮罩文本。 说明&#xff1a; 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 overlay overlay(value: string | CustomBuilder, options?: { align?: Alignment; offset?: { x?: number; y?: number } })…

Spring揭秘:BeanDefinitionRegistry应用场景及实现原理!

内容概要 BeanDefinitionRegistry接口提供了灵活且强大的Bean定义管理能力&#xff0c;通过该接口&#xff0c;开发者可以动态地注册、检索和移除Bean定义&#xff0c;使得Spring容器在应对复杂应用场景时更加游刃有余&#xff0c;增强了Spring容器的可扩展性和动态性&#xf…

GB 2312字符集:中文编码的基石

title: GB 2312字符集&#xff1a;中文编码的基石 date: 2024/3/7 19:26:00 updated: 2024/3/7 19:26:00 tags: GB2312编码中文字符集双字节编码区位码规则兼容性问题存储空间优化文档处理应用 一、GB 2312字符集的背景 GB 2312字符集是中国国家标准委员会于1980年发布的一种…

【Python】6. 基础语法(4) -- 列表+元组+字典篇

列表和元组 列表是什么, 元组是什么 编程中, 经常需要使用变量, 来保存/表示数据. 如果代码中需要表示的数据个数比较少, 我们直接创建多个变量即可. num1 10 num2 20 num3 30 ......但是有的时候, 代码中需要表示的数据特别多, 甚至也不知道要表示多少个数据. 这个时候,…

线上企业展厅:突破时空限制,展示企业实力的新平台

引言&#xff1a; 在数字化时代&#xff0c;企业宣传和展示已不再受限于传统的实体展厅。线上企业展厅作为一种创新的展示方式&#xff0c;不仅能够突破时空限制&#xff0c;还能充分利用多媒体技术&#xff0c;为企业带来更为丰富、立体的展示效果。 一、线上企业展厅的优势 …

YOLOv9中train.py与train_dual.py的异同!

专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;主力高效涨点&#xff01;&#xff01;&#xff01; 首先&#xff0c;train.py&#xff08;左&#xff09;与train_dual.py(右)中的损失函数是不一样的&#xff0c;这也解释了为什么使用train.py除了填入…

浅谈数据中心末端配电母线槽技术的实现及产品监控选型

安科瑞电气股份有限公司 上海嘉定 201801 【摘要】末端配电母线槽是一种新型的数据中心配电解决方案。本文针对额定电流、额定冲击耐受电压、额定短时耐受电流三个*点技术参数展开探讨&#xff0c;分析了母线槽依据的国家标准&#xff0c;指出了*点技术参数的选择依据&#xf…

【STM32】HAL库 CubeMX 教程 --- 高级定时器 TIM1 定时

实验目标&#xff1a; 通过CUbeMXHAL&#xff0c;配置TIM1&#xff0c;1s中断一次&#xff0c;闪烁LED。 一、常用型号的TIM时钟频率 1. STM32F103系列&#xff1a; 所有 TIM 的时钟频率都是72MHz&#xff1b;F103C8不带基本定时器&#xff0c;F103RC及以上才带基本定时器。…

聊一聊ThreadLocal的原理?

1.ThreadLocal创建方式 ThreadLocal<String> threadlocal1 new ThreadLocal(); ThreadLocal<String> threadlocal2 new ThreadLocal(); ThreadLocal<String> threadlocal3 new ThreadLocal(); 2.首先介绍一下&#xff0c;ThreadLocal的原理&#xff1a; 如…

Git你必须知道的知识

一&#xff1a;使用Git的原因 我们在写版本的时候&#xff0c;可能会谢谢改改&#xff0c;可能要回到之前的文件&#xff0c;修改之前的文件&#xff0c;因此总是要保持很多个文件&#xff0c;且书写文件名也很麻烦。git可以有一个仓库&#xff0c;版本库&#xff0c;可以保存这…

五、循环神经网络语言模型(RNN)

1 循环神经网络基础知识 循环核&#xff08;Recurrent Cell&#xff09;定义&#xff1a; 指在时刻 t 时的神经网络单元&#xff0c;用来处理当前时刻的输入和上一时刻的隐藏状态&#xff0c;并生成当前时刻的输出和下一时刻的隐藏状态。记忆体&#xff08;Memory&#xff09;定…

vue面试--9, 1 ObjectProperty与vue3Proxy区别。2 MVVM的理解 3 双向绑定原理?

1 ObjectProperty与vue3Proxy区别 2 MVVM的理解 3 双向绑定原理&#xff1f;

grid布局所有元素在同一行显示且等分列

目录 一、问题 二、实现方式 三、总结 tiips:如嫌繁琐&#xff0c;直接移步总结即可&#xff01; 一、问题 1.grid布局可以通过 grid-template-columns来指定列的宽度。且可以通过repeat来指定重复的次数。但是现在的需求是&#xff1a;grid布局中元素的数量不确定&#…