第五蓝桥杯 蚂蚁冷

蚂蚁感冒

时间限制:1000 ms  |  内存限制:65535 KB

难度:2

描写叙述
长100厘米的细长直杆子上有n仅仅蚂蚁。

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

每仅仅蚂蚁都仅仅能沿着杆子向前爬,速度是1厘米/秒。 当两仅仅蚂蚁碰面时。它们会同一时候掉头往相反的方向爬行。 这些蚂蚁中。有1仅仅蚂蚁感冒了。而且在和其他蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。 请你计算,当全部蚂蚁都爬离杆子时,有多少仅仅蚂蚁患上了感冒。

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

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

正值表示头朝右。负值表示头朝左,数据中不会出现0值,也不会出现两仅仅蚂蚁占用同一位置。当中,第一个数据代表的蚂蚁感冒了。

输出
要求输出1个整数,表示最后感冒蚂蚁的数目。
例子输入
3
5 -2 8
5
-10 8 -20 12 25
例子输出
1
3
AC码(在蓝桥杯官网上AC了,可是NYOJ没有AC)
#include<iostream>
#include<algorithm>
#include<math.h>
using namespace std;
struct ants
{
   int fx;//方向
   int wz;//位置
   int cx;//原来次序
}a[51];
bool cmp(ants x,ants y)
{
  return x.wz<y.wz;
}
int main()
{
   int n,i,k,m,w,p,q;
   while(cin>>n)
   {
       p=q=0;
      for(i=0;i<n;i++)
      {
        cin>>k;
        a[i].cx=i;
        if(k<0)
        {
          a[i].wz=abs(k);
          a[i].fx=-1;
        }
        else
        {
        a[i].wz=k;
        a[i].fx=1;
        }
      }
      m=a[0].wz;
      sort(a,a+n,cmp);
        for(i=0;i<n;i++)
      {
        if(a[i].wz==m)
        {
          w=i;//排序后蚂蚁的位置
        }
      }
       if((w==0&&a[w].fx==-1)||(w==n-1&&a[w].fx==1))
       cout<<"1"<<endl;
       else
       {
           if(a[w].fx==-1)
            {
                 for(i=w-1;i>=0;i--)
                 {
                      if(a[i].fx==1)
                      p++;
                 }
                 for(i=w+1;i<n;i++)
                 {
                   if(a[i].fx==-1)
                      q++;
                 } 

             }
            else
            {
                 for(i=w+1;i<n;i++)
                 {
                      if(a[i].fx==-1)
                      p++;
                 }
                 for(i=w-1;i>=0;i--)
                 {
                      if(a[i].fx==1)
                      q++;
                 } 

            }
             cout<<p+q+1<<endl;
      }

  }
   return 0;
}

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2024-12-16 04:47:57

第五蓝桥杯 蚂蚁冷的相关文章

第五届蓝桥杯 蚂蚁感冒

蚂蚁感冒 时间限制: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

蓝桥杯 蚂蚁感冒

思路: 脑洞题. 蚂蚁碰面的时候不是掉头回去,而是互相"穿过". 实现: 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]

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

标题:蚂蚁感冒 长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的绝

蓝桥杯——判定字符的位置。

蓝桥杯——判断字符的位置 题目: 输入一个字符串,编写程序输出该字符串中元音字母的首次出现位置,如果没有元音字母输出0.英语元音字母只有‘a’.‘e’.‘i’.‘o’.‘u’五个. 样例输入: hello样例输出:2 样例输入: apple样例输出:1 样例输入: pmp样例输出:0 java code: import java.util.*;public class Yuanyingzifu {    public static int fun(String str)    {        

算法笔记_216:第六届蓝桥杯软件类校赛部分真题(Java语言C组)

目录 1 题目一 2 题目二 3 题目三 4 题目四 5 题目五 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 题目一 二项式的系数规律,我国数学家很早就发现了. 如[图1.png],我国南宋数学家杨辉1261年所著的<详解九章算法>一书里就出现了. 其排列规律: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 如下的程序,用来建立N行的杨辉三角形.请填写划线部分缺少的代码.

第六届蓝桥杯本科B组C++省赛题解

比赛结束已经一星期了,成绩也出来了,江苏非211组的省前十,但是深感自己还是有太多的不足.绝对不能以自己还只是大一为借口,acm这条路还长的很. 目测得了95分(满分150),第一题错了,代码填空第一题错了,倒数第二题扣了一点分,最后一道大题全错. 之所以会这么晚来发这道题解,是因为深感自己不足,倒数第二题之所以没有做出来,是因为自己居然不会用[矩阵快速幂].因此,现学现用以自省. 关于题目:所有填空题都可以纯暴力,只要会回溯剪枝法对于蓝桥杯已经足够了.大题目难度一年比一年高 第一题 结果填空

《DNA比对》蓝桥杯复赛试题

题目描述 脱氧核糖核酸即常说的DNA,是一类带有遗传信息的生物大分子.它由4种主要的脱氧核苷酸(dAMP.dGMP.dCMT和dTMP)通过磷酸二酯键连接而成.这4种核苷酸可以分别记为:A.G.C.T. DNA携带的遗传信息可以用形如:AGGTCGACTCCA.... 的串来表示.DNA在转录复制的过程中可能会发生随机的偏差,这才最终造就了生物的多样性. 为了简化问题,我们假设,DNA在复制的时候可能出现的偏差是(理论上,对每个碱基被复制时,都可能出现偏差): 1. 漏掉某个脱氧核苷酸.例如把