POJ-Ants-No.1852
題目描述:
鏈接:http://poj.org/problem?id=1852
這個題就是有n個螞蟻在一根L米長的木棍上爬行,當爬行到端點的時候會掉下木棍,螞蟻的朝向不確定,但是輸入的一律爲朝向左端的距離。
問所有螞蟻掉下木棍的最長和最短時間爲多少?
題目分析:
其實這個題只有計算每隻螞蟻距離兩端的距離即可,長的是最長時間,短的是最短時間。因爲當兩個螞蟻相遇時,可以將兩個螞蟻進行交換,就可以繼續前行。
給出代碼
#include <stdio.h>
#include <stdlib.h>
#include<memory.h>
#include <string.h>
int com(int a,int k,int l);
int num[1000010];
//unsigned long long int gcd(unsigned long long int a,unsigned long long int b);
int main()
{
int N;
scanf("%d",&N);
while(N--)
{
int l,n;
scanf("%d%d",&l,&n);
int i,j;
for(i=1;i<=n;i++)
{
scanf("%d",&num[i]);
}
int sum1=0;
for(i=1;i<=n;i++)
{
if(i==1)
sum1=com(num[i],1,l);
else
{
if(sum1<com(num[i],1,l))
sum1=com(num[i],1,l);
}
}
int sum2=0;
for(i=1;i<=n;i++)
{
if(i==1)
sum2=com(num[i],-1,l);
else
{
if(sum2<com(num[i],-1,l))
sum2=com(num[i],-1,l);
}
}
printf("%d %d\n",sum1,sum2);
}
return 0;
}
int com(int a,int k,int l)
{
if(k==1)
{
int b=l-a;
if(a>b)
return b;
else
return a;
}
else
{
int b=l-a;
if(a<b)
return b;
else
return a;
}
}