Ant题解

Description:

一根长度为L厘米的木棒上有N只蚂蚁,每只蚂蚁要么向左走,要么向右走,速度为1厘米/秒。当两只蚂蚁相撞时,他们会同时掉头(掉头时间不计)给出每只蚂蚁距离木棒左端的距离,问多少秒后,刚好所有蚂蚁都从木棒上掉下来。

N 和 L均不超过1000

输入第一行两个整数,分别是N和L

接下来N行,每行先是一个字符,L或R,代表向左还是向右,然后是一个整数x,代表这个蚂蚁距离木棒左端的距离。

样例输入:

4 10

R 1

R 5

L 3

R 9

样例输出:

9


难度:0


 

Hint:

假设你在远处观察两只蚂蚁相向而行,他们相撞后掉头,和直接穿过有什么区别?

 

刚开始看到题目有点被吓到~.~仔细分析,会发现题目要我们求的就是最后一只蚂蚁掉下来的时间,其实就是它走过的路程长度。那么掉头与不掉头有什么区别呢?下面放张图
掉头与否对最后一只蚂蚁走过的路程长度没有影响,是不是觉得很神奇~~要思考,假设没有提示能想到么?
代码:
#include<stdio.h>
int main() {
    int N, L;
    int x, max = 0, i;
    char a;
    scanf("%d%d", &N, &L);
    for (i = 1; i <= N; i++) {  // i从0到n-1或许更为常用
        scanf("%s%d", &a, &x);
        if (a == 'R') {
            x = L - x;        // 往右走的蚂蚁,那么忽略掉头问题,走过的路程长度就是木棒长度减去距离左端的值
        }
        if (x > max) {
            max = x;
        }
    }
    printf("%d\n", max);
    return 0;
}

题后反思:平时做题可以多思考给出的示例,自己来模拟这个过程,重点要动手,有时候单纯思考是没有用的~~

 


(第一次写题解,慢慢积累经验~.~)

posted @ 2015-12-14 18:47  羽珞  阅读(282)  评论(0编辑  收藏  举报