藍橋杯 歷屆試題 螞蟻感冒
阿新 • • 發佈:2018-12-02
資源 har get fin 螞蟻 lis 一行 space std
每只螞蟻都只能沿著桿子向前爬,速度是1厘米/秒。
當兩只螞蟻碰面時,它們會同時掉頭往相反的方向爬行。
這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。
請你計算,當所有螞蟻都爬離桿子時,有多少只螞蟻患上了感冒。
接著的一行是n個用空格分開的整數 Xi (-100 < Xi < 100), Xi的絕對值,表示螞蟻離開桿子左邊端點的距離。正值表示頭朝右,負值表示頭朝左,數據中不會出現0值,也不會出現兩只螞蟻占用同一位置。其中,第一個數據代表的螞蟻感冒了。
要求輸出1個整數,表示最後感冒螞蟻的數目。
峰值內存消耗 < 256M
CPU消耗 < 1000ms
所以不管第一個感冒的螞蟻是向左還是向右
只要統計一下
第一個感冒的螞蟻的左邊向右走的+第一個感冒的螞蟻的右邊向左走的 code:
Description
長100厘米的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘米/秒。
當兩只螞蟻碰面時,它們會同時掉頭往相反的方向爬行。
這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。
請你計算,當所有螞蟻都爬離桿子時,有多少只螞蟻患上了感冒。
Input
第一行輸入一個整數n (1 < n < 50), 表示螞蟻的總數。接著的一行是n個用空格分開的整數 Xi (-100 < Xi < 100), Xi的絕對值,表示螞蟻離開桿子左邊端點的距離。正值表示頭朝右,負值表示頭朝左,數據中不會出現0值,也不會出現兩只螞蟻占用同一位置。其中,第一個數據代表的螞蟻感冒了。
Output
Sample Input
例如,輸入: 3 5 -2 8 再例如,輸入: 5 -10 8 -20 12 25
Sample Output
程序應輸出: 1 程序應輸出: 3
Hint
資源約定:峰值內存消耗 < 256M
CPU消耗 < 1000ms
Source
藍橋杯 分析: 思維題 兩個螞蟻相碰相當於穿過所以不管第一個感冒的螞蟻是向左還是向右
只要統計一下
第一個感冒的螞蟻的左邊向右走的+第一個感冒的螞蟻的右邊向左走的 code:
#include<stdio.h> #include<iostream> #include<math.h> #include<string.h> #include<set> #include<map> #include<list> #include<math.h> #include<queue> #include<algorithm> using namespace std; typedef long long LL; #define INF 99999999 #define me(a,x) memset(a,x,sizeof(a)) intmon1[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31}; int mon2[13]= {0,31,29,31,30,31,30,31,31,30,31,30,31}; int dir[4][2]= {{0,1},{0,-1},{1,0},{-1,0}}; LL getval() { LL ret(0); char c; while((c=getchar())==‘ ‘||c==‘\n‘||c==‘\r‘); ret=c-‘0‘; while((c=getchar())!=‘ ‘&&c!=‘\n‘&&c!=‘\r‘) ret=ret*10+c-‘0‘; return ret; } void out(int a) { if(a>9) out(a/10); putchar(a%10+‘0‘); } #define max_v 55 int a[max_v]; bool cmp(int x,int y) { return abs(x)<abs(y); } int main() { int n; while(~scanf("%d",&n)) { for(int i=0;i<n;i++) scanf("%d",&a[i]); int temp=a[0],k=0; sort(a,a+n,cmp); for(int i=0;i<n;i++) { if(a[i]==temp) { k=i; break; } } int ans=0; for(int i=0;i<k;i++) { if(a[i]>0) ans++; } for(int i=k+1;i<n;i++) { if(a[i]<0) ans++; } cout<<ans+1<<endl; } } /* 思維題 兩個螞蟻相碰相當於穿過 所以不管第一個感冒的螞蟻是向左還是向右 只要統計一下 第一個感冒的螞蟻的左邊向右走的+第一個感冒的螞蟻的右邊向左走的 */
藍橋杯 歷屆試題 螞蟻感冒