历届试题 蚂蚁感冒
来源:互联网 发布:淘宝韩国代购哪家好 编辑:程序博客网 时间:2024/04/28 00:30
历届试题 蚂蚁感冒
时间限制:1.0s 内存限制:256.0MB
问题描述
长100厘米的细长直杆子上有n只蚂蚁。它们的头有的朝左,有的朝右。
每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒。
当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。
这些蚂蚁中,有1只蚂蚁感冒了。并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。
请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。
每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒。
当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。
这些蚂蚁中,有1只蚂蚁感冒了。并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。
请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。
输入格式
第一行输入一个整数n (1 < n < 50), 表示蚂蚁的总数。
接着的一行是n个用空格分开的整数 Xi (-100 < Xi < 100), Xi的绝对值,表示蚂蚁离开杆子左边端点的距离。正值表示头朝右,负值表示头朝左,数据中不会出现0值,也不会出现两只蚂蚁占用同一位置。其中,第一个数据代表的蚂蚁感冒了。
接着的一行是n个用空格分开的整数 Xi (-100 < Xi < 100), Xi的绝对值,表示蚂蚁离开杆子左边端点的距离。正值表示头朝右,负值表示头朝左,数据中不会出现0值,也不会出现两只蚂蚁占用同一位置。其中,第一个数据代表的蚂蚁感冒了。
输出格式
要求输出1个整数,表示最后感冒蚂蚁的数目。
样例输入
3
5 -2 8
5 -2 8
样例输出
1
样例输入
5
-10 8 -20 12 25
-10 8 -20 12 25
样例输出
3
解题思路:看了好久过了两组数据,百度看了一下其他的人的思路:
原来碰面的蚂蚁向反方向走等价于直接穿行过去,这样就比较好做了
首先对数据进行绝对值排序
感冒蚂蚁左爬的话:
如果它的左面有向右爬的蚂蚁,那么总感冒的蚂蚁=左面向右爬+右向左爬,
如果它的左面没有向右爬的蚂蚁,那么右面向左爬的不会感冒。。
同理,右爬道理一样。
还有注意的一点是蓝桥杯题目并没有说多组数据,没用多组测试数据我在官网提交0分。。。。
。。。。。。后面改了一下。。
我的代码:
// #include<iostream>#include<math.h>#include<memory.h>#include<algorithm>using namespace std;bool cmp(int x,int y){return abs(x)<abs(y);}int main(){int n;while(cin>>n){int a[100],i,temp,t;for(i=0;i<n;i++)cin>>a[i];temp=a[0];//感冒蚂蚁 sort(a,a+n,cmp);for(i=0;i<n;i++)//排序之后 感冒蚂蚁所在的weiz {if(a[i]==temp){t=i;break;}}if(temp>0)//右爬=右面向左爬的+右面向左爬的(前提是有右面向左爬的蚂蚁) {int s1=0,s2=0,sum=0;for(i=t+1;i<n;i++){if(a[i]<0) s1++;//右面向左爬的 }for(i=0;i<t;i++){if(a[i]>0) s2++;//右面向左爬的 }if(s1>0)sum=s1+s2+1;elsesum=1;cout<<sum<<endl;}else//左爬=左面向右爬的+右爬向左爬的 {int s1=0,s2=0,sum=0;for(i=0;i<t;i++){if(a[i]>0)s1++;//左面向右爬的}for(i=t+1;i<n;i++){if(a[i]<0) s2++;//右爬向左爬的}if(s1>0)sum=s1+s2+1;elsesum=1;cout<<sum<<endl;}}return 0;}
1 0
- 历届试题 蚂蚁感冒
- 历届试题 蚂蚁感冒
- 历届试题 蚂蚁感冒
- 历届试题 蚂蚁感冒
- 历届试题 蚂蚁感冒
- 历届试题 蚂蚁感冒
- 历届试题 蚂蚁感冒
- 蓝桥杯 历届试题 蚂蚁感冒
- 蓝桥杯 历届试题 蚂蚁感冒
- 蓝桥杯 历届试题 蚂蚁感冒
- 蓝桥杯 历届试题 蚂蚁感冒
- 蓝桥杯历届试题---蚂蚁感冒
- 蓝桥杯 历届试题 蚂蚁感冒
- 蓝桥杯 历届试题 蚂蚁感冒
- 历届试题 蚂蚁感冒 (蓝桥杯)
- 【蓝桥杯训练】 历届试题 蚂蚁感冒
- 蓝桥杯 历届试题 蚂蚁感冒 (模拟)
- 蓝桥杯 历届试题 蚂蚁感冒 详解
- MS-DOS方式窗口外观设置
- C++中堆和栈的完全解析
- 线程的7种状态及相互转换
- bzoj 1016: [JSOI2008]最小生成树计数 (矩阵树定理+最小生成树)
- finally
- 历届试题 蚂蚁感冒
- 网站变灰色的方法
- python操作mysql
- Java学习----day8——(1)包和导入
- js显示隐藏 table 的行和列
- JavaScript onclick传递对象参数(easyui传递一行数据时)错误:uncaught SyntaxError: Unexpected identifier
- Tomcat 5.5部署jsp项目—jsp乱码问题的解决
- Spark-ML-01-小试spark分析离线商品信息
- fusioncharts Y轴不显示中文的解决方法