UVA - 10881 Piotr's Ants 推理

该博客详细介绍了UVA在线判题系统中编号为10881的"Piotr's Ants"问题。文章探讨了题目背景,即n只蚂蚁在L长度的木棍上移动,有的向左,有的向右。当蚂蚁相遇时,它们会改变方向。每只蚂蚁的速度是1m/s。博主解析了如何在T秒后确定每只蚂蚁的状态和位置,指出尽管蚂蚁会相互碰撞并改变方向,但它们在木棍上的相对位置在T秒后保持不变。通过分析蚂蚁的初始排序,可以确定它们最后的位置和移动状态,因为每次碰撞相当于蚂蚁位置的交换,而总的移动距离保持固定。
摘要由CSDN通过智能技术生成

题目大意:有n只蚂蚁在一根长度为L的木棍上,这n只蚂蚁有的向左移动有的向右移动,如果两只蚂蚁相碰的话,这两只蚂蚁就会按相反方向继续前进,每只蚂蚁的移动速度为1m/s,问T秒后每只蚂蚁的状态和所在的位置

解题思路:按从木棒的从左到右排序,T秒后,每只蚂蚁在木棒上的从左到右的位置是不变,这样的话,就可以确定每只蚂蚁最终位置,因为相碰的话,就会按反方向运动,这样的话就相当于两只蚂蚁交换移动,剩下的移动交给另一只蚂蚁来完成,其最终的位置是不变的,只是由另一只蚂蚁完成了而已,这样的话,由从左到右的顺序,就可以确定每只蚂蚁的最终位置和状态了

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
#define maxn 10010

char status[3][10] = {"L","Turning","R"};
int f[maxn];
struct Ants{
	int id;
	int pos;
	int dir;
	bool operator <(const Ants t) const {
		return pos < t.pos;	
	}
}start[maxn], end[maxn];

int main() {
	int test, L, T, N, mark = 1; 
	scanf("%d",&test);
	while(test--) {
		scanf("%d%d%d",&L, &T, &N);
		char c;
		int s, e , dir;
		for(int i = 0; i &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值