UVa 10881 Piotr's Ants

Vivado 2021.1 实战:手把手教你用IEEE1735 V2加密你的Verilog源码(附完整TCL命令) 本文详细介绍了在Vivado 2021.1中使用IEEE1735 V2标准加密Verilog源码的全流程,包括许可证申请、密钥文件配置、TCL命令执行及加密后验证。通过实战步骤和完整TCL命令,帮助开发者有效保护FPGA设计知识产权,确保核心算法安全。 阅读详情
Problem D
Piotr's Ants
Time Limit: 2 seconds

"One thing is for certain: there is no stopping them;
the ants will soon be here. And I, for one, welcome our
new insect overlords."

Kent Brockman

Piotr likes playing with ants. He has n of them on a horizontal poleL cm long. Each ant is facing either left or right and walks at a constant speed of 1 cm/s. When two ants bump into each other, they both turn around (instantaneously) and start walking in opposite directions. Piotr knows where each of the ants starts and which direction it is facing and wants to calculate where the ants will end upT seconds from now.

Input
The first line of input gives the number of cases, N. N test cases follow. Each one starts with a line containing 3 integers:L ,T and n (0 <= n <= 10000). The nextn lines give the locations of then ants (measured in cm from the left end of the pole) and the direction they are facing (L or R).

Output
For each test case, output one line containing "Case #x:" followed byn lines describing the locations and directions of then ants in the same format and order as in the input. If two or more ants are at the same location, print "Turning" instead of "L" or "R" for their direction. If an ant falls off the polebefore T seconds, print "Fell off" for that ant. Print an empty line after each test case.

Sample InputSample Output
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


Problemsetter: Igor Naverniouk

Alternate solutions: Frank Pok Man Chu and Yury Kholondyrev


题意:

一根木棍上有若干只蚂蚁,他们的爬行速度都为1m/s,0时刻的初始位置(距离木棍左端的距离)和爬行方向已知,当两只蚂蚁相遇时,会立刻掉头朝反方向爬去。问经过t秒之后,每只蚂蚁的位置和朝向。

思路1:

两只蚂蚁相遇后,因为是立刻掉头爬行,所以,两只蚂蚁原先会到达的地方仍然会有蚂蚁,就好像蚂蚁穿过而行一样,只不过是两只蚂蚁交换了位置和爬行方向。所以只需弄清楚蚂蚁之间是如何交换的即可。

代码1:

#include <iostream>
#include <algorithm>

using namespace std;

#define MAXN 10000

struct Ant
{
	int id;		//输入次序编号
	int origin; //起点位置
	int dir;	//朝向,-1代表向左,0代表转向中,1代表向右
	int dest;	//终点位置
	bool operator < (const Ant &a) const
	{
		return origin < a.origin;
	}
}ants[MAXN+5];

char dirName[][10] = {"L", "Turning", "R"};

int order[MAXN+5];

void Swap(int i, int j) //除了id号,交换蚂蚁的所有信息
{
	Ant tmp = ants[i];
	ants[i] = ants[j];
	ants[i].id = tmp.id;
	tmp.id = ants[j].id;
	ants[j] = tmp;
}

int main(void)
{
	int ncases;
	cin >> ncases;

	int caseID = 1;
	while (ncases-- != 0)
	{
		int l, t, n;
		cin >> l >> t >> n;

		int i, j;
		for (i = 0; i < n; i++)
		{
			char dir;
			cin >> ants[i].origin >> dir;

			ants[i].id = i;
			ants[i].dir = (dir == 'L' ? -1 : 1);
			ants[i].dest = ants[i].origin + ants[i].dir*t;
		}

		sort(ants, ants+n); //按照起点位置从小到大排序

		bool finish = false;
		while (!finish)
		{
			finish = true;
			for (i = 0, j = 1; j < n; i++, j++)
			{
				if (ants[i].dir == 1 && ants[j].dir == -1 //只有相向而行的蚂蚁才可能交换信息
					&& ants[i].origin < ants[j].origin && ants[i].dest > ants[j].dest) //交换位置和方向的条件
				{
					Swap(i, j);
					finish = false;
				}
			}
		}
		//更改正在相遇中的蚂蚁朝向
		for (i = 0, j = 1; j < n; i++, j++)
		{
			if (ants[i].dest == ants[j].dest)
			{
				ants[i].dir = ants[j].dir = 0;
			}
		}
		//记录输出次序
		for (i = 0; i < n; i++)
		{
			order[ants[i].id] = i;
		}
		
		cout << "Case #" << caseID++ << ":" << endl;
		for (i = 0; i < n; i++)
		{
			int j = order[i];
			if (ants[j].dest < 0 || ants[j].dest > l)
			{
				cout << "Fell off" << endl;
			}
			else
			{
				cout << ants[j].dest << ' ' << dirName[ants[j].dir+1] << endl;
			}
		}
		cout << endl;
	}
	return 0;
}

思路2:

因为蚂蚁相遇后立刻掉头,所以,经过 t 时间后,蚂蚁的位置次序保持不变。蚂蚁的输入次序与位置次序不相同,所以需要先建立起输入次序与起始位置次序的对应关系,又因为 t 时间后的位置次序与起始位置次序相同,也就得到了输入次序与结束位置次序的对应关系。

代码2:

#include <iostream>
#include <algorithm>

using namespace std;

#define MAXN 10000

struct Ant
{
	int id;		//输入次序编号
	int pos;	//位置
	int dir;	//朝向,-1代表向左,0代表转向中,1代表向右
	bool operator < (const Ant &a) const
	{
		return pos < a.pos;
	}
}before[MAXN+5], after[MAXN+5];

char dirName[][10] = {"L", "Turning", "R"};

int main(void)
{
	int ncases;
	cin >> ncases;

	int caseID = 1;
	while (ncases-- != 0)
	{
		int l, t, n;
		cin >> l >> t >> n;

		int i;
		for (i = 0; i < n; i++)
		{
			int p;
			char dir;
			cin >> p >> dir;
			int d = (dir == 'L' ? -1 : 1);

			before[i].id = i;
			before[i].pos = p;
			before[i].dir = d;
			after[i].pos = p + t*d;
			after[i].dir = d;
		}

		sort(before, before+n);
		int order[MAXN+5];
		for (i = 0; i < n; i++)
		{
			order[before[i].id] = i;
		}

		sort(after, after+n);
		//调整正在相遇的蚂蚁的朝向
		for (i = 0; i < n-1; i++)
		{
			if (after[i].pos == after[i+1].pos)
			{
				after[i].dir = after[i+1].dir = 0;
			}
		}

		cout << "Case #" << caseID++ << ":" << endl;
		for (i = 0; i < n; i++)
		{
			int j = order[i];
			if (after[j].pos < 0 || after[j].pos > l)
			{
				cout << "Fell off" << endl;
			}
			else
			{
				cout << after[j].pos << ' ' << dirName[after[j].dir+1] << endl;
			}
		}
		cout << endl;
	}
	return 0;
}

测试数据:

10 2 4
1 R
3 R
5 L
7 L


10 4 4
1 R
4 L
5 L
7 L


【YoloV8改进策略】上采样改进|EUCB,轻量高效的上采样模块|即插即用 YOLOv8作为当前最先进的实时目标检测与实例分割模型之一,其在速度与精度之间取得了出色的平衡。然而,在资源受限的边缘设备或对实时性要求极高的应用场景中,YOLOv8的计算开销,尤其是在特征金字塔网络(FPN)和路径聚合网络(PAN)中用于特征融合的上采样操作,仍然是一个瓶颈。YOLOv8的颈部(Neck)结构中广泛使用nn.Upsample进行上采样,该操作虽然简单,但缺乏对特征内容的感知能力,且后续通常需要标准卷积来修复因插值带来的伪影,这增加了不必要的计算负担。 阅读详情

相关推荐

《童虎学习笔记》5分钟用Keepalived搭建MySQL高可用实现虚ip自动漂移

1

tonghu_note的博客 5617

UVA: 10881 派特的蚂蚁

注意:蚂蚁相撞后两者反方向移动相当于蚂蚁穿墙而过,所以不用判定撞击,在这种情况下,蚂蚁的相对位置不变,即一开始位于第一位的蚂蚁最后行走后还是第一位,因为蚂蚁之间不会越位,#include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;cmath&gt; #include &lt;algo...

宴夜小丑的博客 221

手把手教你用P-MOS管搭建双电源自动切换电路(含AO3401选型指南)

本文提供了一份基于P-MOS管AO3401构建高可靠双电源自动切换电路的实战指南。文章详细对比了继电器、理想二极管与MOS管方案的优劣,深入解析了AO3401的关键参数选型,并手把手指导了从原理图设计、PCB布局到上电调试的全过程,旨在帮助硬件工程师和创客以极低成本实现无缝、高效的电源冗余方案。

moss5的博客 1232

Uva 10881 (思维)

题意:有若干只蚂蚁在一根木棒上爬, 相遇后就转向, 告诉你每只蚂蚁的状态和蚂蚁活动的时间, 求每只蚂蚁的最终状态。 题解:虽然看似很复杂, 但仔细想想每只蚂蚁的活动的相对位置其实是不变的, 这样记录一下每只蚂蚁的初始编号就可以解决了。 (这题没说 L == 0 的时候蚂蚁不算掉下去, wa了n发, 坑死人,,) 代码: #include&amp;amp;amp;amp;amp;lt;cstdio&amp;amp;amp;amp;amp;gt; #include&amp;amp

ttoobne 334

Windows升级保留个人文件和应用灰色?改注册表版本指纹

Windows 升级安装并非简单跳过下一步,安装程序会先读取注册表中 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion 下的 EditionID、ProductName、CompositionEditionID 等版本指纹,与目标镜像 install.wim/esd 记录的版本类型做双向匹配。若当前系统被识别为 LTSC、精简版或跨版本降级,兼容性扫描会判定升级路径不可用,于是“保留个人文件和应用”变灰,只能全新安装。理解版本指纹与升级可行性表的匹配机制,可

weixin_31986143的博客 366

怎么定位K8s容器中运行的JAVA程序OOM异常(一)

一.前置环境 1. 运行在k8s集群上的Pod服务(Java程序) 2. MAT分析工具 二.利用Jmap工具导出Heap Dump 1.执行命令进入pod容器 kubectl exec -itn {namespace} {pod}} sh 2.利用jmap生成java程序的Dump文件 jps | grep {jar} ./jmap -dump:live,format=b,file=haep.hprof 8 3.利用k8s命令导出Dump文件到本地 kubectl cp -n

计算科学 3013

UVa 10881 蚂蚁(等效变换)

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=20&page=show_problem&problem=1822 题意:一根长为L的木棒上有n只蚂蚁左右移动,1秒1个单位长度,碰撞后反向移动,问T秒后蚂蚁的位置与方向。 思路:碰撞后反方向和直接穿过相对位置来说是一样的,他们在木棒上

Java# 1336

思科模拟器实战:MQTT协议实现物联网设备通信全流程解析

本文详细解析了如何在思科模拟器中利用MQTT协议实现物联网设备通信的全流程。通过搭建网络拓扑、配置MQTT Broker与客户端,并编写发布/订阅逻辑,手把手指导读者完成一个“开关控制电灯”的经典物联网场景实验,帮助零成本掌握物联网通信核心。

weixin_29294975的博客 381

UVA(10881)蚂蚁

题目大意:第一个数据代表数据组数,接下来三个数据 L T n ,分别代表棍长,时长以及蚂蚁数量,接下来n行是蚂蚁的初始位置以及初始方向。要求求出经过T秒后,各蚂蚁的状况。(相对棍子左端的距离,方向)蚂蚁相撞后会各自回头。若经过T秒后,两蚂蚁处于相同位置,则输出“该位置 + Turning”,若已离开木棍(刚好在木棍两端不算)输出“Fell off”,否则输出当前蚂蚁的状态。   这道题是一道逻...

I_O_fly的博客 384

用 CL_SALV_TREE 把层级数据做成一棵会呼吸的 ABAP ALV 树:从类继承扫描到事件交互的完整拆解

本文介绍了SAP ABAP中使用CL_SALV_TREE实现树形ALV报表的方法。该技术将层级数据(如类继承关系)以可展开/折叠的树形结构展示,解决了传统ALV Grid无法直观显示层次结构的问题。核心实现采用"数据表+层级表"分离的设计模式:数据表存储节点业务信息,层级表维护父子关系。通过add_node方法动态构建树形结构,支持设置节点文本、图标和事件。文中提供了完整示例代码,演示了如何递归扫描ABAP类继承关系并构建树形ALV,这种技术特别适用于展示类族谱、权限树等层级数据,能显著

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 206

SAP FICO 科目余额查询表开发说明书(包括测试样例、程序代码仅作参考,不保证一定可以运行)

SAP FICO 科目余额查询表开发说明书(包括开发源代码、测试样例)

我好像病了的博客 1040

UVA 10881 Piotr's Ants

题目链接:https://vjudge.net/problem/UVA-10881 题目大意:有一根水平的杆,长为L单位,有n个蚂蚁左右爬,速度为每秒1个单位,两个蚂蚁碰头就瞬间反转方向继续爬,直到时间到T或者掉落杆子。 题目思路:这道题是一道思维题,关键在于三个点, 其一,计算蚂蚁最终位置时可以认为蚂蚁碰头是“擦肩而过”, 其二,每个蚂蚁其实只能在它左右的两个蚂蚁之间活动,换言之蚂蚁所...

anxie3867的博客 173

若依框架二次开发——RuoYi-AI 本地部署流程

若依框架二次开发——RuoYi-AI 本地部署流程

bjzhang75的博客 1784

uva 10881 - Piotr's Ants(排序)

题目链接:10881 - Piotr's Ants 题目大意:在一个长为L的木棒上有n只蚂蚁,给出蚂蚁的初始位置以及方向,问说移动T秒后各个蚂蚁的位置以及状态,如果两只蚂蚁在移动的过程中相撞,则会同时掉头。 解题思路:问题只要解决说两只蚂蚁相撞的情况就差不多了,其实从整体上来看(不考虑蚂蚁的编号),“相撞”和对穿而过“是一样的,只不过移动到那个位置的蚂蚁并不是先前的那只。所以说

不慌不忙、不急不躁 1375

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Piotr's Ants UVA - 10881 (我的天,晚安晚安~~)

#include <iostream> #include<stdio.h> #include<algorithm> #include<map> using namespace std; const int maxn=10009; struct st { int id; int x; int i; } a[maxn]...

chen_zan_yu_的博客 210

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【UVa10881 Piotr's Ants】数学 | 思维 | STL | E

近来感觉脑袋有点抽,做几道思维题活动活动… 【UVa10881】Piotr’s Ants Time limit: 3.000 seconds Tags:数学 思维 题目描述 给定一根长为 L&nbsp;cmL\ cmL&nbsp;cm 的木棍和 nnn 只蚂蚁在初始时刻距木棍左端点的距离以及初始朝向(LLL 表示向左,RRR 表示向右) 蚂蚁运动速度为 1&nbsp;cm/s1\ cm/s1...

Keyu Tian's blog 225

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

UVa 10881 Piotr's Ants (排序)

UVa 10881 Piotr’s Ants题目大意:在L长的木棍上有n只蚂蚁,向左或右爬,速度为1单位长度每秒,若两蚂蚁撞上,则掉头,求T秒以后各蚂蚁所在位置,若掉下去,输出”Fell off”,否则输出位置和朝向,若此时正撞上,朝向输出”Turning”.题目分析:这道题还是有一些思维含量的.实际上,n只蚂蚁在爬行过程中,其相对位置(也就是第几号位置)是不会改变的,所以可以不考虑对撞之后换方向的

Continue 482

UVA - 10881 Piotr's Ants 推理

题目大意:有n只蚂蚁在一根长度为L的木棍上,这n只蚂蚁有的向左移动有的向右移动,如果两只蚂蚁相碰的话,这两只蚂蚁就会按相反方向继续前进,每只蚂蚁的移动速度为1m/s,问T秒后每只蚂蚁的状态和所在的位置 解题思路:按从木棒的从左到右排序,T秒后,每只蚂蚁在木棒上的从左到右的位置是不变,这样的话,就可以确定每只蚂蚁最终位置,因为相碰的话,就会按反方向运动,这样的话就相当于两只蚂蚁交换移动,剩下的移动

静静地码 680

UVa10881 Piotr's Ants【模拟】

“One thing is for certain: there is no stopping them; the ants will soon be here. And I, for one, welcome our new insect overlords.” Kent Brockman  Piotr likes playing with ants. He has n of them

海岛Blog 1430

uva 10881 Piotr's Ants (模拟)

uva 10881 Piotr's Ants "One thing is for certain: there is no stopping them; the ants will soon be here. And I, for one, welcome our new insect overlords."Kent Brockman Piotr likes playing wit

总有那么一群人喜欢盯着我的博客看,估计这是他们见过最长的博客名,我必须得告诉他们博客名最长可以写多长 1113

UVA 10881 [Piotr's Ants]

UVA 10881 [Piotr’s Ants]index UVA 10881 Piotrs Ants index Description input output code DescriptionPiotr likes playing with ants. He has n of them on a horizontal pole L cm long. Each ant is facing

arbietrsc的博客 359

思维题 UVA 10881 Piotr's Ants

题目传送门 1 /* 2 题意:在坐标轴上一群蚂蚁向左或向右爬,问经过ts后,蚂蚁的位置和状态 3 思维题:本题的关键1:蚂蚁相撞看作是对穿过去,那么只要判断谁是谁就可以了 4 关键2:蚂蚁的相对位置不变 关键3:order数组记录顺序 5 */ 6 #include <cstdio> 7 #i...

weixin_33725272的博客 134

UVA.10881 Piotr's Ants (思维题)

UVA.10881 Piotr’s Ants (思维题)题意分析有一根长度为L cm的木棍,上有n只蚂蚁,蚂蚁要么向左爬,要么向右,速度均为1cm/s,若2只蚂蚁相撞,则蚂蚁同时调头。求解第T秒时这n只蚂蚁的状态。 若此时相撞 输出:Turning 若此时已经掉下木棍 输出:Fell off 且要按照输入时的顺序输出各个蚂蚁的状态此题难点有2个: 1.其实相撞可以理解为交叉走过(因为速度相同

Pengwill's Blog 392

uva10881 Piotr's Ants

分析

YHaX的博客 264

UVa 10881Piotr's Ants【思维】

题目链接 对于每个蚂蚁来说,他相对于其他蚂蚁的位置是固定的,赶超前面或者被后面的赶超都是要回头的,所以,假设木棒无限长,位于第一位的永远在第一位,第二位的永远在第二位。同时每两个碰头的蚂蚁其实就是类似于交换了身份继续前进。所以,先不管他们的碰头,就让每个沿着路线继续走下去。由前面的可以知道,每个蚂蚁的最终状态的位置排列的顺序就是一开始蚂蚁的编号。 #include #include #in

博客已搬迁到http://www.cnblogs.com/cniwoq/ 516

Piotr's ants UVA 10881

Problem D Piotr's Ants Time Limit: 2 seconds   "One thing is for certain: there is no stopping them; the ants will soon be here. And I, for one, welcome our new insect overlords."

Jackwuyongxing的专栏 608
上一篇: DP——NYOJ 题目61 传纸条(一)
下一篇: 单调队列
庞老板
博客等级 码龄15年 127粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

庞老板

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值