2014蓝桥杯——感冒的蚂蚁

标题:蚂蚁感冒

长100厘米的细长直杆子上有n只蚂蚁。它们的头有的朝左,有的朝右。

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

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

这些蚂蚁中,有1只蚂蚁感冒了。并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。

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

【数据格式】

第一行输入一个整数n (1 < n < 50), 表示蚂蚁的总数。

接着的一行是n个用空格分开的整数 Xi (-100 < Xi < 100), Xi的绝对值,表示蚂蚁离开杆子左边端点的距离。正值表示头朝右,负值表示头朝左,数据中不会出现0值,也不会出现两只蚂蚁占用同一位置。其中,第一个数据代表的蚂蚁感冒了。

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

例如,输入:

3

5 -2 8

程序应输出:

1

再例如,输入:

5

-10 8 -20 12 25

程序应输出:

3

资源约定:

峰值内存消耗 < 256M

CPU消耗  < 1000ms



蚂蚁相撞可以看作穿过!!这样一来这一题就没有难度了,重在分析

 1 #include <iostream>
 2 using std::endl;
 3 using std::cout;
 4 using std::cin;
 5 int abs(int x)
 6 {
 7     if(x<0)
 8         return -x;
 9     return x;
10 }
11 int main()
12 {
13     int N;
14     int data[50];
15     while(cin >> N)
16     {
17         //感冒蚂蚁的数量
18         int left=0,right=0;
19         //输入数据
20         for(int i=0; i<N; ++i)
21         {
22             cin >> data[i];
23         }
24         for(int i=1; i<N;++i)
25         {
26             //找到该蚂蚁右边且向左走的
27             if(data[i]<0&&abs(data[i])>abs(data[0]))
28             {
29                 left++;
30             }
31             //找到该蚂蚁左边且向右走的
32             if(data[i]>0&&abs(data[i])<abs(data[0]))
33             {
34                 right++;
35             }
36         }
37         //判断是否为特殊情况
38         if((data[0]<0&&right==0)||(data[0]>0&&left==0))
39         {//见上面解析
40             cout << "1" <<endl;
41         }else
42         {
43             cout << left+right+1 << endl;
44         }
45     }
46     return 0;
47 }


原文转载于http://blog.csdn.net/computer_liuyun/article/details/23350077

时间: 2024-10-17 08:11:57

2014蓝桥杯——感冒的蚂蚁的相关文章

蓝桥杯历届《蚂蚁感冒》

问题描述 长100厘米的细长直杆子上有n只蚂蚁.它们的头有的朝左,有的朝右. 每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒. 当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行. 这些蚂蚁中,有1只蚂蚁感冒了.并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁. 请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒. 输入格式 第一行输入一个整数n (1 < n < 50), 表示蚂蚁的总数. 接着的一行是n个用空格分开的整数 Xi (-100 < Xi < 100), Xi的绝

记2014“蓝桥杯全国软件大赛&quot;决赛北京之行

5月29,30日 终于到了这一天.晚上有数据结构课,10点多的火车,我们就没有去上课,下午在宿舍里收拾东西,晚上8点左右从南校出发,9点半多到达火车站和老师学长学姐们会和. 第一次去北京,第一次买的卧铺,真的很兴奋.对这次北京之行满满的都是期待.卧铺,躺在上面很舒服,因为第一次,不知道还需要换票,就把票放在包里了,找了一会才找到,看来还是得把票随身带着.卧铺晚上熄灯,我看了一部电影,然后就睡着了,一觉睡到五点多.上午看了看模板,这次蓝桥杯决赛说实话没有怎么认真的准备,做的题也比较少.把一些小的知

2014蓝桥杯——六角填数

标题:六角填数 如图所示六角形中,填入1~12的数字. 使得每条直线上的数字之和都相同. 图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少? 请通过浏览器提交答案,不要填写多余的内容. 1 #include <iostream> 2 #include <cmath> 3 #include <cstdio> 4 #include <cstring> 5 using namespace std; 6 7 #define eps 10e-10 8

2014蓝桥杯——李白打酒

标题:李白打酒 话说大诗人李白,一生好饮.幸好他从不开车. 一天,他提着酒壶,从家里出来,酒壶中有酒2斗.他边走边唱: 无事街上走,提壶去打酒. 逢店加一倍,遇花喝一斗. 这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了. 请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b.则:babaabbabbabbbb 就是合理的次序.像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的). 注意:通过浏览器提交答案.答案是个整数.不要书写任何多

2014蓝桥杯——地宫取宝

标题:地宫取宝 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿). 当小明走到出口时,如果他手中的宝贝恰好是k件,则这些宝贝就可以送给小明. 请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这k件宝贝. [数据格式] 输入一行3个整数,用空

蓝桥杯 - 兰顿蚂蚁 (模拟)

历届试题 兰顿蚂蚁 时间限制:1.0s   内存限制:256.0MB 问题描述 兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种. 平面上的正方形格子被填上黑色或白色.在其中一格正方形内有一只"蚂蚁". 蚂蚁的头部朝向为:上下左右其中一方. 蚂蚁的移动规则十分简单: 若蚂蚁在黑格,右转90度,将该格改为白格,并向前移一格: 若蚂蚁在白格,左转90度,将该格改为黑格,并向前移一格. 规则虽然简单,蚂蚁的行为却十分复杂.刚刚开始时留下的路线都会有接近对称,像是会重复,

蓝桥杯 兰顿蚂蚁 (DFS+模拟)

[题目描述] 历届试题 兰顿蚂蚁 时间限制:1.0s   内存限制:256.0MB 问题描述 兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种. 平面上的正方形格子被填上黑色或白色.在其中一格正方形内有一只"蚂蚁". 蚂蚁的头部朝向为:上下左右其中一方. 蚂蚁的移动规则十分简单: 若蚂蚁在黑格,右转90度,将该格改为白格,并向前移一格: 若蚂蚁在白格,左转90度,将该格改为黑格,并向前移一格. 规则虽然简单,蚂蚁的行为却十分复杂.刚刚开始时留下的路线都会有接近对称

蓝桥杯 兰顿蚂蚁(模拟)

历届试题 兰顿蚂蚁 时间限制:1.0s   内存限制:256.0MB 问题描述 兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种. 平面上的正方形格子被填上黑色或白色.在其中一格正方形内有一只"蚂蚁". 蚂蚁的头部朝向为:上下左右其中一方. 蚂蚁的移动规则十分简单: 若蚂蚁在黑格,右转90度,将该格改为白格,并向前移一格: 若蚂蚁在白格,左转90度,将该格改为黑格,并向前移一格. 规则虽然简单,蚂蚁的行为却十分复杂.刚刚开始时留下的路线都会有接近对称,像是会重复,

二十五: 蓝桥杯-兰顿蚂蚁

问题:兰顿蚂蚁 问题描述 兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种. 平面上的正方形格子被填上黑色或白色.在其中一格正方形内有一只"蚂蚁". 蚂蚁的头部朝向为:上下左右其中一方. 蚂蚁的移动规则十分简单: 若蚂蚁在黑格,右转90度,将该格改为白格,并向前移一格: 若蚂蚁在白格,左转90度,将该格改为黑格,并向前移一格. 规则虽然简单,蚂蚁的行为却十分复杂.刚刚开始时留下的路线都会有接近对称,像是会重复,但不论起始状态如何,蚂蚁经过漫长的混乱活动后,会开辟出