首页 > 其他分享 >蚂蚁感冒

蚂蚁感冒

时间:2024-03-28 22:11:26浏览次数:24  
标签:右边 ch 蚂蚁 碰头 感染 感冒 初始

一、问题描述

P8611 [蓝桥杯 2014 省 AB] 蚂蚁感冒

二、问题简析

这道题的关键是如何处理蚂蚁掉头的问题。我们可以把蚂蚁掉头看作直接穿了过去
图1
为什么可以这样做?如果两只蚂蚁中有一只感染,则碰头后两只都感染了,不需要区分哪一只。如果两只蚂蚁都没感染,则碰头后仍未感染,也不需要区分哪一只。
这样做以后,不再需要考虑掉头,每只蚂蚁只需要朝初始方向前进,期间碰到感染的蚂蚁则染病。

值得注意的是,因为蚂蚁的速度都是一样的,所以碰头只可能发生在相向的蚂蚁之间,同向的蚂蚁永远也不可能碰头。因此,感染只需要考虑相向的蚂蚁。

先根据 \(X_i\) 的绝对值,按升序排序,得到蚂蚁在杆子上的位置。
因为初始感染的蚂蚁只要一只,同时只要相向而行的蚂蚁才会被感染,所以,无论初始感染蚂蚁的方向如何,在其左边的蚂蚁,只有朝右(\(>0\))才会感染;在其右边的蚂蚁,只有朝左(\(<0\))才会感染。(解释:初始感染蚂蚁向左运动,先感染左边的蚂蚁,再由左边的蚂蚁感染右边的蚂蚁;向右运动,先感染右边的蚂蚁,再由右边的蚂蚁感染左边的蚂蚁。)
需要注意几种特殊情况,此时,只有一只蚂蚁感染

  • 1、初始感染蚂蚁向,且其左边的蚂蚁没有一只向右,即左边无感染,则右边也不会有蚂蚁感染。
  • 2、初始感染蚂蚁向,且其右边的蚂蚁没有一只向左,即右边无感染,则左边也不会有蚂蚁感染。

三、AC代码

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

int quickin(void)
{
	int ret = 0;
	bool flag = false;
	char ch = getchar();
	while (ch < '0' || ch > '9')
	{
		if (ch == '-')    flag = true;
		ch = getchar();
	}
	while (ch >= '0' && ch <= '9' && ch != EOF)
	{
		ret = ret * 10 + ch - '0';
		ch = getchar();
	}
	if (flag)    ret = -ret;
	return ret;
}

int A[55], n, B;

bool cmp(const int &a, const int &b)
{
	return abs(a) < abs(b);
}

int main()
{
	#ifdef LOCAL
	freopen("test.in", "r", stdin);
	#endif
	
	n = quickin();
	for (int i = 0; i < n; i++)
		A[i] = quickin();
	B = A[0];
	sort(A, A + n, cmp);
	
	int i, t1 = 0, t2 = 0;
	for (i = 0; A[i] != B; i++)
	{
		if (A[i] > 0)
			t1 +=1;
	}
	for (i += 1; i < n; i++)
	{
		if (A[i] < 0)
			t2 += 1;
	}
	
	if (B > 0 && t2 == 0)
	{
		cout << 1 << endl;
		return 0;
	}
	if (B < 0 && t1 == 0)
	{
		cout << 1 << endl;
		return 0;
	}
	
	cout << t1 + t2 + 1 << endl;
	
	return 0;
}

标签:右边,ch,蚂蚁,碰头,感染,感冒,初始
From: https://www.cnblogs.com/hoyd/p/18102745

相关文章

  • 【活动回顾】蚂蚁摩斯“数据要素市场&行业数智化系列沙龙”首期 圆满举行
    3月21日,蚂蚁摩斯联合上海市数商协会、上海数据交易所,共同举办第一期数据要素市场&行业数智化实践系列沙龙活动,以金融行业为专题展开研讨,共同推动金融行业数据要素市场发展。本次活动由上海数交所副总经理章健开场揭开活动序幕,同时活动还邀请了蚂蚁集团合规负责人、帆软软件资......
  • 代码随想录 第十五天 | ● 层序遍历 10 ● 226.翻转二叉树 ● 101.对称二叉树 2 感
    leetcode:102.二叉树的层序遍历-力扣(LeetCode)思路:用队列长度控制弹栈的多少,不等于空时获取root,因为传了一个根肯定是1,接下来找左右节点,将根节点弹出,获取下一次的size,一直到空。。。//102.二叉树的层序遍历classSolution{publicList<List<Integer>>resList=newA......
  • R语言生态学种群空间点格局分析:聚类泊松点过程对植物、蚂蚁巢穴分布数据可视化
    全文链接:https://tecdat.cn/?p=33676原文出处:拓端数据部落公众号点模式分析(点格局分析)是一组用于分析空间点数据的技术。在生态学中,这种类型的分析可能在客户的几个情境下出现,但对数据生成方式做出了特定的假设,因此让我们首先看看哪些生态数据可能与点模式分析相关或不相关。......
  • R语言生态学种群空间点格局分析:聚类泊松点过程对植物、蚂蚁巢穴分布数据可视化
    全文链接:https://tecdat.cn/?p=33676原文出处:拓端数据部落公众号点模式分析(点格局分析)是一组用于分析空间点数据的技术。在生态学中,这种类型的分析可能在客户的几个情境下出现,但对数据生成方式做出了特定的假设,因此让我们首先看看哪些生态数据可能与点模式分析相关或不相关。......
  • 【教3妹学编程-算法题】3028. 边界上的蚂蚁
    3妹:2哥,今天春节回的去吗?最火春运遭遇最强暴雪:冻雨像刨冰2哥:听说湖北的高速、高铁都已经停了。3妹:是啊,如果是雪还好办,可以除雪,冻雨就比较难办了。2哥:哎,好多人都滞留的高铁站了,没法回家了3妹:也有好多人滞留在高速上面,急的像热锅上的蚂蚁,惨。2哥:3妹,要不别回去了吧,我们就地过......
  • 蚂蚁逃离(ant)
    【问题描述】在一段即将被水淹没的很窄通道里有很多蚂蚁,蚂蚁都在以相同的速度(1单位长度/秒)移动,它们会在不同的位置上排成一列,但蚂蚁的开始反向有向左的也有向右的。当两个蚂蚁以相反的方向在太窄而无法通过的通道中相遇时,蚂蚁会转头调转方向继续移动,速度不变。问蚂蚁需要多少......
  • 感冒过后的久咳不愈解决方案
    感冒过后的久咳不愈解决方案:山药干30克,每天煮水喝,连续喝至少一周。注意事项:如果山药干水是微酸,证明你买的山药干的是用硫熏过的,吃了对人的五脏六腑都与损伤。正常的山药干喝起来很平,一点点香,一点点甜;原理:山药能补脾肺肾三个脏腑,脾为生痰之源,肺为储痰之气,肾为生痰之本。咳嗽就是......
  • P2198 杀蚂蚁 题解
    题目大意有一条长度为\(n\)个单位长度的路,蚂蚁们要从起点走到终点。蚂蚁们每走\(1\)个单位距离需要\(T\)秒钟。现在,出题人可以在路上修筑\(3\)种防御塔来阻挡蚂蚁的进攻,每个单位距离只能修筑\(1\)座塔,塔的作用分别如下:激光塔:蚂蚁在塔前时每秒会受到\(r\)点伤害。......
  • 蚂蚁爱购--靠谱的SpringBoot项目
    ​简介这是一个靠谱的SpringBoot项目实战,名字叫蚂蚁爱购。从零开发项目,视频加文档,十天就能学会开发JavaWeb项目。教程路线是:搭建环境=>安装软件=>创建项目=>添加依赖和配置=>通过表生成代码=>编写Java代码=>代码自测=>前后端联调=>准备找工作。学完即可成为合格的Java......
  • 蚂蚁集团持续探索生成式AI,20篇论文入选AI顶会NeurlPS
    当地时间12月10日,为期一周的全球AI顶级会议NeurlPS在美国路易斯安那州新奥尔良市举办。NeurlPS官方数据显示,本届会议共有12343篇有效论文投稿,接收率为26.1%。蚂蚁集团20篇论文被收录。据了解,蚂蚁此次入选的论文,覆盖计算机视觉、自然语言处理、图神经网络、图像处理等多个人工智能和......