蓝桥杯历届试题 蚂蚁感冒
2018-03-20 11:45
387 查看
题意:一根100cm长的细杆上,有许多只蚂蚁,他们或朝左,或朝右,处于不同的位置,但速度相同,为1cm/s。其中有一只蚂蚁身患感冒,且会传染与它碰面的蚂蚁。给定所有蚂蚁的初始位置,以及他们的方向,求最后染上感冒的蚂蚁的数量。
结论:已知第一只蚂蚁为感染源,设为蚂蚁x,分析易得,结果=x前进方向与他反向的蚂蚁数量+x前进反方向与他同向的蚂蚁数量(前提是前者数量不为0)。
ac代码:
结论:已知第一只蚂蚁为感染源,设为蚂蚁x,分析易得,结果=x前进方向与他反向的蚂蚁数量+x前进反方向与他同向的蚂蚁数量(前提是前者数量不为0)。
ac代码:
#include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) using namespace std; typedef long long ll; const int N=1e5+5; bool cmp(int x,int y){ return abs(x)<abs(y); } int main(){ int n; scanf("%d",&n); int a[51]; for(int i=0;i<n;i++) scanf("%d",&a[i]); int ans,t=a[0]; if(a[0]>0){ sort(a,a+n,cmp); int pos=n-1;ans=1; while(a[pos]!=t){ if(a[pos]<0) ans++; pos--; } t=0; for(int i=0;i<pos;i++) if(a[i]>0) t++; if(ans==1) puts("1"); else 4000 printf("%d\n",ans+t); } else{ sort(a,a+n,cmp); int pos=0;ans=1; while(a[pos]!=t){ if(a[pos]>0) ans++; pos++; } t=0; for(int i=pos+1;i<n;i++) if(a[i]<0) t++; if(ans==1) puts("1"); else printf("%d\n",ans+t); } return 0; }
相关文章推荐
- 蓝桥杯--历届试题 蚂蚁感冒 【思维】
- 蓝桥杯历届试题 PREV-27 蚂蚁感冒 循环暴力模拟
- 问题 1454: [蓝桥杯][历届试题]蚂蚁感冒
- 蓝桥杯 历届试题 蚂蚁感冒
- 蓝桥杯 历届试题 蚂蚁感冒 详解
- 蓝桥杯 历届试题 蚂蚁感冒
- 蓝桥杯 历届试题 蚂蚁感冒 (思维题)
- 蓝桥杯历届试题 蚂蚁感冒(模拟)
- 【蓝桥杯】历届试题 蚂蚁感冒
- 【蓝桥杯训练】 历届试题 蚂蚁感冒
- 蓝桥杯历届试题——蚂蚁感冒
- 历届试题 蚂蚁感冒 蓝桥杯
- (蓝桥杯)历届试题 蚂蚁感冒 (思维题)
- 蓝桥杯 历届试题 蚂蚁感冒
- 蓝桥杯历届试题 蚂蚁感冒(模拟+细分)
- 蓝桥杯历届试题---蚂蚁感冒
- 蓝桥杯 历届试题 蚂蚁感冒
- 蓝桥杯_历届试题 蚂蚁感冒
- 历届试题 蚂蚁感冒 (蓝桥杯)
- 蓝桥杯 历届试题 蚂蚁感冒(模拟)