首页 > 编程语言 >蚂蚁感冒【第五届蓝桥杯省赛C++A/B组】

蚂蚁感冒【第五届蓝桥杯省赛C++A/B组】

时间:2022-12-19 00:12:19浏览次数:40  
标签:蚂蚁 ++ res 感冒 C++ 蓝桥 int abs 省赛

蚂蚁感冒

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

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

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

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

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

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

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

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

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

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

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

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

数据范围
\(1<n<50,\)
\(0<|Xi|<100\)
输入样例1:
3
5 -2 8
输出样例1:
1
输入样例2:
5
-10 8 -20 12 25
输出样例2:
3

思路

  1. 性质:掉头等于穿过
  2. 分情况讨论

Code

点击查看代码
#include<iostream>
#include<cmath>
using namespace std;
int n,cnt,t,res;
int a[N];

int main(){
	cin >> n >> t;
	for(int i = 1; i < n; i ++)cin >> a[i];
	
	if(t > 0){//向右走 
		for(int i = 1; i < n; i ++){
			if(a[i] < 0 && abs(a[i]) > t)res ++;//相向而行必定感染 
			else if(a[i] > 0 && abs(a[i]) < t)cnt ++;//如果有相向而行的那么尾随的也会被感染  
		}
		if(!res)cout << res + cnt + 1;//由于速度一样只有这两种情况会被感染,其他的追不上 
		else cout << 1;
	}
	else{//向左走 
		for(int i = 1; i < n; i ++){
			if(a[i] > 0 && abs(a[i]) < abs(t))res ++;
			else if(a[i] < 0 && abs(a[i]) > abs(t))cnt ++;
		}
		if(res != 1)cout << res + cnt + 1;
		else cout << 1;
	}
}

标签:蚂蚁,++,res,感冒,C++,蓝桥,int,abs,省赛
From: https://www.cnblogs.com/J-12045/p/16991313.html

相关文章

  • 买不到的数目【第四届蓝桥杯省赛C++A组,第四届蓝桥杯省赛JAVAC组】
    买不到的数目小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是......
  • [编程基础] C++多线程入门4-数据共享和资源竞争
    date:2020-05-2916:51:33+0800tags:-编程基础原始C++标准仅支持单线程编程。新的C++标准(称为C++11或C++0x)于2011年发布。在C++11中,引入了新的线程库。因此运......
  • [编程基础] C++多线程入门1-创建线程的三种不同方式
    date:2020-05-2916:30:50+0800tags:-编程基础原始C++标准仅支持单线程编程。新的C++标准(称为C++11或C++0x)于2011年发布。在C++11中,引入了新的线程库。因此运行......
  • Modern C++ Overview (综览)
    PartI:Language(第一篇:语言)大局观——简直像个新语言给出一个完整实例,展示(几乎)所有新特性的样貌,让学员从真实代码中一次性窥得(几乎)全豹,得知即将面对的新知和挑战......
  • 蓝桥杯今日份练习
    一、题目相信小伙伴们都学过斐波那契数列,它是这样一个数列:1,1,3,5,8,13,21…………用f(n)表示斐波那契数列的第n项,则有:f1=f2=1,fn=fn-1+fn-2(n>2).输入一个n,求出fn对10的9次方+7......
  • 蓝桥杯 2014 国 C- 套娃 【倍增】
    参考:https://www.luogu.com.cn/blog/edisnimorF/solution-p8616题面https://www.luogu.com.cn/problem/P8616分析套娃\(u\)套着\(v\)视为u->v建边,那么整张图就是一棵树......
  • C++ Web(HTTP)开发 10 大利器
    众所周知,C++并不是一种流行的Web开发语言,究其原因有很多:语言门槛高、使用难度大、开发效率低......话虽如此,​​但随着Emscripten的成熟,未来C++在Web方面会发挥......
  • C++进阶知识汇总
    知识来源:https://www.imooc.com/learn/1305二进制在计算机中的意义:计算机如何存负整数:原码:符号位变为1反码:除符号位其余取反补码:=反码+1是-7的表示方法,计算机用补码......
  • Guide to predefined macros in C++ compilers (gcc, clang, msvc etc.)
    https://blog.kowalczyk.info/article/j/guide-to-predefined-macros-in-c-compilers-gcc-clang-msvc-etc..htmlWhenwritingportableC++codeyouneedtowritecondi......
  • C++学习---cstdio的源码学习分析08-重新打开文件流函数freopen
    cstdio中的文件访问函数stdio.h中定义了一系列文件访问函数(fopen,fclose,fflush,freopen,setbuf,setvbuf),接下来我们一起来分析一下freopen对应的源码实现。-fopen:打开文件-......