K. The Robot(思维 + 看数据范围)

news2024/11/26 4:40:38

Problem - 1468K - Codeforces

有一个机器人在一个格子场上,这个格子场在各个方向都是无尽的。最初,机器人位于坐标为(0,0)的单元中。他将执行由一串大写拉丁字母 "L"、"R"、"D"、"U "描述的命令。当一个命令被执行时,机器人只是向相应的方向移动。

L':向左移动一个单元(当前单元的X坐标减少1)。
R':向右移动一个单元(当前单元的X坐标增加1)。
D':向下一个单元格(当前单元格的y坐标减少1)。
U':一个单元格向上(当前单元格的y坐标增加1)。
你的任务是在场地的一个单元中放置一个障碍物,以便在执行命令后,机器人将返回到其路径的原始单元(0,0)。当然,障碍物不能被放置在起始单元(0,0)。可以保证的是,如果不放置障碍物,那么机器人将不会返回到起始单元。

障碍物以如下方式影响机器人的运动:如果它试图向某个方向走,而有一个障碍物,那么它只是停留在原地(障碍物也保持不变,也就是说,它不会消失)。

找出场地中的任何一个单元(除了(0,0)),如果你在那里放了一个障碍物,机器人在执行完所有命令后会返回到(0,0)单元。如果没有解决方案,就报告。

输入
第一行包含一个整数t(1≤t≤500)--测试案例的数量。

每个测试用例由一个包含s的单行组成--命令序列,只有大写的拉丁字母 "L"、"R"、"D"、"U"。s的长度在1到5000之间,包括在内。对s的附加约束:如果没有障碍物,执行这个命令序列会将机器人带到(0,0)以外的某个单元。

一个测试中所有s的长度之和不超过5000。

输出
对每个测试案例打印一行。

如果有解决方案,打印两个整数x和y(-109≤x,y≤109),使得(x,y)中的障碍物将迫使机器人返回到(0,0)单元。
否则,打印两个零(即0 0)。
如果有多个答案,你可以打印其中任何一个。

例子
inputCopy
4
L
RUUDL
LLUUU
DDDUUUU
输出拷贝
-1 0
1 2
0 0
0 1

题解:

如果我们预设的点不在,机器人的行走路径上,机器人肯定不会返回原点

看到数据范围只有5000,

所以我们直接枚举路径上的坐标

然后重新遍历一遍,检查是否能到达原点

时间复杂度为n^2

 

#include<iostream>
#include<algorithm>
#include<string>
#include<queue>
#include<vector>
#include<map>
#include<cstring>
#include<cmath>
#include<set>
using namespace std;
#define int long long
typedef pair<int,int> PII;
char a[300050];
int n;
PII get(char s)
{
	PII t;
	if(s == 'R')
	{
		t = {1,0};
	}
	if(s == 'U')
	{
		t = {0,1};
	}
	if(s == 'D')
	{
		t = {0,-1};
	}
	if(s == 'L')
	{
		t = {-1,0};
	}
	return t;
}
int check(int x,int y)
{
	int tx = 0,ty = 0;
	for(int i = 1;i <= n;i++)
	{
		PII t = get(a[i]);
		int xx = t.first + tx;
		int yy = t.second + ty;
		if(xx != x||yy != y)
		{
			tx = xx;
			ty = yy;
		}
	}
	return !tx&&!ty;
}
void solve()
{
	cin >> a+1;
	n = strlen(a+1);
	int x = 0,y = 0;
	for(int i = 1;i <= n;i++)
	{
		PII t = get(a[i]);
		x += t.first;
		y += t.second;
		if(check(x,y))
		{
			cout << x<<" "<<y<<"\n";
			return ;
		}
	}
	cout <<"0 0\n";
}
//5 2
//
signed main()
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);
//	cout.tie(0);
	int t = 1;
	cin >> t;
    while(t--)
	{

		solve();
	} 
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/114145.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用凸优化来调整基于毫米波的无线通信参数(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 随着通信产业尤其是个人移动通信的高速发展&#xff0c;无线电频谱的低端频率已趋饱和&#xff0c;即使是采用高斯滤波最小频移…

CentOS7安装runc

CentOS7安装runc前言一、runc简介二、安装runc1.安装 libseccomp-dev2.获取runc源代码2.1先创建 $GOPATH/src/github.com 目录2.2go get下载源代码2.3checkout最新的代码2.4编译并安装runc2.5查看runc版本总结前言 本文记录CentOS7安装runc的过程。 一、runc简介 RunC 是一个…

UWB定位算法介绍

典型的无线定位方法主要有四种: 1.基于信号到达时间(TOA)&#xff1b; 2.基于信号到达时间差(TDOA)&#xff1b; 3.基于信号到达角度(AOA) 4.基于接信号强度(RSSI) 各自有着不同的优势和应用范围。 定位时一分为两步&#xff0c;第一步:测量时间、角度、信号强度; 第二步…

FFmpeg基础: YUV像素格式介绍和使用

文章目录YUV像素格式YUV采样YUV格式分类YUV存储模式FFmpeg读取YUV数据YUV和RGB转换YUV像素格式 在图片中我们一般都是通过RGB(红-绿-蓝)格式来表示一个像素点。而在视频当中为了兼容黑白和彩色视频我们通过YUV来表示一个像素点&#xff0c;YUV中Y表示像素点的灰度(也就是亮度分…

【nowcoder】笔试强训Day6

目录 一、单选题 二、多选题 三、编程题 3.1不要二 3.2 把字符串转成整数 一、单选题 1.下面哪段程序能够正确的实现了GBK编码字节流到UTF-8编码字节流的转换&#xff1a; A dstString.frombytes(src,”GBK”).getbytes(“UTF-8”) B dstnew String (src,”GBK”).getb…

计算机视觉与图形学-神经渲染专题-非刚体NeRF

《Fast Non-Rigid Radiance Fields from Monocularized Data》链接&#xff1a;https://graphics.tu-bs.de/publications/kappel2022fast摘要单目动态场景下的 3D 重建和新颖视图合成最近受到越来越多的关注。现有工作在合成给定和前向拍摄的真实世界数据下可以合成较好的结果&…

iPhone如何恢复丢失/消失的通讯录联系人,试试这6 种恢复方案

“在我更新 iOS 后&#xff0c;数百个联系人从我的 iPhone 上消失了。我试图从 iCloud 恢复我的联系人存档。我所看到的只是“没有可用的档案”。请来人帮忙&#xff01;” 每当发布新的 iOS 版本时&#xff0c;许多 iPhone 用户都会争先恐后地开始更新。然而&#xff0c;他们…

【Python学习记录】matplotlib绘图基本配置

✨ 博客主页&#xff1a;小小马车夫的主页 ✨ 所属专栏&#xff1a;Python学习记录 文章目录前言1、设置颜色2、设置每个点marker3、设置标题、X轴、Y轴文字4、设置刻度5、同一图中画多条线、绘制图例6、设置图层顺序7、多个图的设置subplot8、保存图片总结前言 matplotlib是p…

python中文编码json中文输出问题

python2.x版本的字符编码有时让人很头疼&#xff0c;遇到问题&#xff0c;网上方法可以解决错误&#xff0c;但对原理还是一知半解&#xff0c;本文主要介绍 python 中字符串处理的原理&#xff0c;附带解决 json 文件输出时&#xff0c;显示中文而非 unicode 问题。首先简要介…

人机交互-广州DACAI触摸屏开发中遇到的一些(屏幕和编程)问题

目录 背景 一、屏幕相关 1、厂家给的指令集资料可能有错误&#xff0c;请以软件VisualTFT中的指令助手为准。 2、屏幕程序下载方式 3、SD卡文件格式问题 4、画面id的问题 巨坑&#xff01;&#xff01;&#xff01; 5、子画面变暗的问题 6、 VisualTFT自带的键盘问题 …

【openGauss】一键编译openGauss3.1+dolphin,体验新增的mysql兼容特性

前言 前两天写了一篇openGauss3.1关于mysql的相关特性&#xff0c;但由于openGauss官网提供下载的版本还是9月30号第一次发布的版本&#xff0c;很多特性都还没合入&#xff0c;所以不少爱好者不能轻易体验到。 虽然openGauss已经提供了“一键式编译脚本”,但是还是得做一些前…

Linux系统下的常用文件目录指令

文件目录指令 pwd (Print Working Directory):显示当前工作目录的绝对路泾 ls (list) 基本语法:ls[选项][目录或是文件]常用选项 -a:显示当前目录所有的文件和目录&#xff0c;包括隐藏的。 -l:以列表的方式显示信息 cd (change directory) :切换到指定目录 基本语法:cd参数理…

5G无线技术基础自学系列 | 5G网络速率问题分析

素材来源&#xff1a;《5G无线网络规划与优化》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 前面介绍了接入性和移动性两类问题的处…

node.js+uni计算机毕设项目湖南工商大学财务信息查询小程序(程序+小程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等…

计网第三章.数据链路层—封装成帧、差错检测

以下是湖科大计算机网络公开课的笔记 1 . 数据链路层概述 1.1 一些概念 链路&#xff08;Link&#xff09;就是从一个结点到相邻结点的一段物理线路&#xff0c;而中间没有任何其他的交换结点 数据链路&#xff08;Data Link&#xff09; 是指实现通信协议的硬件和软件加到…

【自然语言处理】最大熵马尔可夫模型

有任何的书写错误、排版错误、概念错误等&#xff0c;希望大家包含指正。 由于这部分的参考资料比较少&#xff0c;网上大部分资料重复且不完整&#xff0c;对于一些关键计算没有推导&#xff0c;所以这里我主要讨论几篇论文和讲义。但是这些论文和讲义之间也有些许差别&#…

算法CPP时间复杂度

观察数据生成器可以发现对于每次操作均有 。 考虑将这些三元组想象成空间直角坐标系中 为对顶点的长方体。 将操作分成两部分&#xff0c;一部分是对 轴同时操作的&#xff0c;可以一开始就用前缀 统计完&#xff0c;将长方体变 成一个底面为阶梯状的直棱柱。另一部分是对 或…

【网络工程】9、实操-万达酒店综合项目(三)

接上篇《8、实操-万达酒店综合项目&#xff08;三&#xff09;》 之前我们按照项目要求进行模拟拓扑的构建实操&#xff0c;完成了办公区部分的网络配置&#xff0c;本篇我们来继续完成其他区域的网络配置。 一、总体架构情况 按照之前项目需求的拓扑图&#xff1a; 我们已经…

爱了爱了,Spring Cloud Alibaba内部微服务架构笔记真的太牛了

现如今微服务架构十分流行&#xff0c;而采用微服务构建系统也会带来更清晰的业务划分和可扩展性。同时&#xff0c;支持微服务的技术栈也是多种多样的&#xff0c;本文主要讲述我们为什么选择Spring Cloud和它的技术概要。 为什么微服务架构需要Spring Cloud 简单来说&#x…

【C++初阶】list的模拟实现

文章目录list的介绍list的模拟实现成员变量Member functionsconstructordestructoroperatorIterators正向迭代器反向迭代器beginendrbeginrendModifierspush_frontpop_frontpush_backpop_backinserteraseclear完整版代码list.hreverse_iterator.htest.cpplist的介绍 list是STL…