1.1.5 蚂蚁。一根长度为L厘米的木棍上有n只蚂蚁,每只蚂蚁要么朝左爬,要么朝右爬,速度为1厘米/秒。

本文介绍了一道关于蚂蚁爬行的算法问题,每只蚂蚁在木棍上以固定速度移动,碰撞后会改变方向。文章给出了输入输出格式、样例及解题思路,强调在不掉下木棍的情况下,蚂蚁的相对位置保持不变。通过分析蚂蚁的运动规律,可以确定它们最终的位置和朝向。解决方案包括使用结构体表示蚂蚁状态并进行排序,从而得出结果。
摘要由CSDN通过智能技术生成

蚂蚁

题目来源 :《算法竞赛入门经典——训练指南》/刘汝佳,陈锋编著

一根长度为L厘米的木棍上有n只蚂蚁,每只蚂蚁要么朝左爬,要么朝右爬,速度为1厘米/秒。当两只蚂蚁相撞时,二者同时掉头(掉头时间忽略不计)。给出每只蚂蚁的初始位置和朝向,计算T秒之后每只蚂蚁的位置。
【输入格式】
输入的第一行为数据组数。每组数据的第一行为3个正整数L,T,n(0≤n≤10000);以下n行每行描述一只蚂蚁的初始位置,其中,整数x为蚂蚁距离木棍左端的距离(单位:
厘米),字母表示初始朝向(L表示朝左,R表示朝右)。
【输出格式】
对于每组数据,输出n行,按输入顺序输出每只蚂蚁的位置和朝向(Turning表示正在碰撞)。在第T秒之前已经掉下木棍的蚂蚁(正好爬到木棍边缘的不算)输出Fell off。
【样例输入】
2
10 1 4
1 R
5 R
3 L
10 R
10 2 3
4 R
5 L
8 R

【样例输出】

Case #1:
2 Turning
6 R
2 Turning
Fell off
Case #2:
3 L
6 R
10 R

示例代码

//代码来源:《算法竞赛入门经典——训练指南》/刘汝佳,陈锋编著.

#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn = 10000 + 5;

struct Ant{
   
	int id; //enter order
	int p; //position
	int d; //direct -1 left, 0 turning, 1 right 
	
	bool operator<(const Ant& a) const{
   
		return p < a.p;
	}
}before[maxn], after[maxn
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值