蓝桥杯 蚂蚁感冒

思路:

脑洞题。

蚂蚁碰面的时候不是掉头回去,而是互相“穿过”。

实现:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cmath>
 4 using namespace std;
 5
 6 int n, a[55];
 7 int main()
 8 {
 9     cin >> n;
10     cin >> a[0];
11     bool dir = true;
12     if (a[0] < 0)
13         dir = false;
14     bool flag = false;
15     for (int i = 1; i < n; i++)
16     {
17         cin >> a[i];
18         if (dir && a[i] < 0 && abs(a[i]) > a[0] ||
19             !dir && a[i] > 0 && a[i] < abs(a[0]))
20             flag = true;
21     }
22     if (!flag)
23         puts("1");
24     else
25     {
26         int cnt = 1;
27         for (int i = 1; i < n; i++)
28         {
29             if (dir)
30             {
31                 cnt += (a[i] < 0 && abs(a[i]) > a[0] || a[i] > 0 && a[i] < a[0]);
32             }
33             else
34             {
35                 cnt += (a[i] > 0 && a[i] < abs(a[0]) || a[i] < 0 && a[i] < a[0]);
36             }
37         }
38         cout << cnt << endl;
39     }
40     return 0;
41 }
时间: 2024-10-20 15:23:11

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

第五届蓝桥杯 蚂蚁感冒

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

蓝桥杯 [蚂蚁感冒] 思维

题目链接:http://lx.lanqiao.cn/problem.page?gpid=T119 题目大意:类似挑战程序设计的蚂蚁走杆子,区别在于有感冒蚂蚁,相撞时会传染.问最后有多少多被传染. 关键思想:看过蚂蚁走杆子原题的应该有这种思维,就是相撞往回走的蚂蚁和原来两只蚂蚁继续走是等效的.在本题中,区别就是两只相撞的蚂蚁都会患感冒. 速度都相同使得本题很好解,考虑这几种情况. 比如初始感冒蚂蚁为10,那么下次他能感染到的蚂蚁就是-12,-15之类的,可以化成条件式10+x<0并且10*x<0

第五蓝桥杯 蚂蚁冷

蚂蚁感冒 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描写叙述 长100厘米的细长直杆子上有n仅仅蚂蚁. 它们的头有的朝左,有的朝右. 每仅仅蚂蚁都仅仅能沿着杆子向前爬,速度是1厘米/秒. 当两仅仅蚂蚁碰面时.它们会同一时候掉头往相反的方向爬行. 这些蚂蚁中.有1仅仅蚂蚁感冒了.而且在和其他蚂蚁碰面时,会把感冒传染给碰到的蚂蚁. 请你计算,当全部蚂蚁都爬离杆子时,有多少仅仅蚂蚁患上了感冒. 输入 第一行输入一个整数n (1 < n < 50), 表示蚂蚁的总数. 接

蓝桥杯——真题训练之蚂蚁感冒

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

蓝桥杯历届《蚂蚁感冒》

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

2014蓝桥杯——感冒的蚂蚁

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

蚂蚁感冒---第五届蓝桥杯

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

01_蚂蚁感冒(第五届蓝桥预赛本科B组第8题 nyoj 990)

问题来源:第五届蓝桥预赛本科B组第8题 问题描述:有在一条定长(100cm)的直杆上有n(1<n<50)只蚂蚁(每只蚂蚁的起点都不一样),他们都以相同的速度(1cm/s)向左或者向右爬, 当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行. 这些蚂蚁中,有1只蚂蚁感冒了.并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁. 请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒. 问题分析:1.两只蚂蚁碰面时,往相反方向爬行,等价于两只蚂蚁相遇后继续爬行(只不过换了蚂蚁). 2.如果感冒蚂蚁(s

算法-蓝桥杯习题(七)

蓝桥杯习题 蓝桥杯练习系统习题加答案,总共分为6部分,90%习题使用C语言解答,部分使用C++或者Java.大部分习题为搜索参考或者别人提供所得,不足之处在所难免,恳请批评指正(预计200多题,习题仅供学习交流) 目录 算法训练(详见 算法-蓝桥杯习题(一))Go 算法训练(详见 算法-蓝桥杯习题(二))Go 算法提高(waiting...) 历届试题(详见 算法-蓝桥杯习题(六))Go 历届试题(详见 算法-蓝桥杯习题(七))Go 蓝桥杯练习系统评测数据 链接: http://pan.baid