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:
假设你在远处观察两只蚂蚁相向而行,他们相撞后掉头,和直接穿过有什么区别?
刚开始看到题目有点被吓到~.~仔细分析,会发现题目要我们求的就是最后一只蚂蚁掉下来的时间,其实就是它走过的路程长度。那么掉头与不掉头有什么区别呢?下面放张图
![](https://images2015.cnblogs.com/blog/855778/201512/855778-20151214182849584-674157412.png)
掉头与否对最后一只蚂蚁走过的路程长度没有影响,是不是觉得很神奇~~要思考,假设没有提示能想到么?
代码:
代码:
#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 ", max); return 0; }
题后反思:平时做题可以多思考给出的示例,自己来模拟这个过程,重点要动手,有时候单纯思考是没有用的~~
(第一次写题解,慢慢积累经验~.~)