E. Yet Another Walking Robot 又一个行走的机器人(map详解代码)

坐标平面上有一个机器人。最初,机器人位于该点(0,0)
.它的路径被描述为字符串s长度n由字符“L”、“R”、“U”、“D”组成。这些字符中的每一个都对应着一些动作:
‘L’(左):表示机器人从该点移动(x,y)
切中要害(x−1,y);
‘R’(右):表示机器人从该点移动(x,y)
切中要害(x+1,y);
‘U’(向上):表示机器人从该点移动(x,y)
切中要害(x,y+1);
‘D’(向下):表示机器人从该点移动(x,y)
切中要害(x,y−1)

创建此机器人的公司要求您以某种方式优化机器人的路径。为此,您可以删除路径的任何非空子字符串。但这家公司不希望他们的客户注意到机器人行为的变化。这意味着,如果在优化之前,机器人在该点结束了其路径(xe,ye),然后在优化后(即从中删除一些单个子字符串s) 机器人也在该点结束其路径(xe,ye)此优化是一个低预算项目,因此您需要删除尽可能短的非空子字符串来优化机器人的路径,使其路径的端点不会改变。您可能无法优化路径。此外,优化后目标路径可能是一个空字符(即删除的子字符串是整个字符串s).回想一下,子字符串s是可以从以下位置获取的字符串s通过从前缀中删除一定数量的字符(可能为零)和从后缀中删除一定数量的字符(可能为零)。例如,“LURLLR”的子字符串是“LU”、“LR”、“LURLLR”、“URL”,但不是“RR”和“UL”。
你必须回答t
独立的测试用例。
输入
输入的第一行包含一个整数t
(1≤吨≤1000) — 测试用例的数量。
下一个2t行描述测试用例。每个测试用例在两行上给出。测试用例的第一行包含一个整数n(1≤N≤2⋅105) — 机器人路径的长度。测试用例的第二行包含一个字符串s
包括n字符 ‘L’, ‘R’, ‘U’, ‘D’ — 机器人的路径。
可以保证n在所有测试用例上不超过2⋅105
(∑n≤2⋅105).
输出
对于每个测试用例,请在其上打印答案。如果无法删除机器人路径端点不更改的非空子字符串,请打印 -1。否则,打印两个整数l和r这样1≤l≤r≤n 删除的子字符串的端点。价值r−l+1
应该是尽可能少的。如果有多个答案,请打印其中任何一个。
在这里插入图片描述

思路:用map记录每一个出现的点,如果某一个点之前出现过,那么就说明这个点和之前那个点中间的过程步骤是可以删除的,同时借助p数组记录每一个点出现时候的初始时刻或是位置

#include<iostream>
#include<algorithm>
#include<map>
#include<cstring>
#include<string>
#define x first
#define y second
using namespace std;;
int main()
{int t;cin >> t;while (t--) {int n;string s;cin >> n >> s;//输入int l = -1, r = n;//定义边界map<pair<int, int>, int> p;//定义每一个点以及他出现的位置pair<int, int> flag = { 0, 0 };//从(0,0)开始走//记录当前机器人走到哪了p[flag] = 0;初始化for (int i = 0; i < n; i++){if (s[i] == 'L') --flag.x;if (s[i] == 'R') ++flag.x;if (s[i] == 'U') ++flag.y;if (s[i] == 'D') --flag.y;if (p.count(flag))//如果机器人当前位置,如果这个位置之前出现过说明这一段可以删除{if (i - p[flag] + 1 < r - l + 1) {//当前位置和第一次出现的之前差值小于r-l+1l = p[flag];//左边界r = i;//当前i定义为右边界}}p[flag] = i + 1;}if (l == -1)cout << -1 << endl;elsecout << l + 1 << " " << r + 1 << endl;//别忘了加1}return 0;
}

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

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

相关文章

VSCODE自动更新无法连接远程服务器报错“waiting for server log...“的解决方法

问题描述 一觉醒来打开vscode发现连接远程服务器显示无法连接&#xff0c;终端一直报错“waiting for server log…"&#xff0c;经查是因为vscode自动更新到了1.86&#xff0c;对于远程服务器的linux版本要求较高。这里记录下解决方法。 解决方法 1. 下载vscode便携版…

Sketch3D:用于草图到3D生成的样式一致性指南

Sketch3D: Style-Consistent Guidance for Sketch-to-3D Generation Sketch3D&#xff1a;用于草图到3D生成的样式一致性指南 Wangguandong Zheng 重试 错误原因 Southeast UniversityChina 重试 错误原因 wgdzhengseu.edu.cnHaifeng Xia 重试 错误原因 Southeast Universit…

设计模式总结-简单工厂模式

简单工厂模式 创建型模式创建型模式概述创建型模式种类 简单工厂模式模式定义模式动机模式结构模式分析模式实例与解析实例一&#xff1a;简单电视机工厂实例二&#xff1a;权限管理 模式优缺点简单工厂模式的优点简单工厂模式的缺点 模式适用环境模式扩展 小结 创建型模式 创…

如何在Ubuntu系统使用docker部署DbGate容器并发布至公网可访问

文章目录 1. 安装Docker2. 使用Docker拉取DbGate镜像3. 创建并启动DbGate容器4. 本地连接测试5. 公网远程访问本地DbGate容器5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定公网地址远程访问 本文主要介绍如何在Linux Ubuntu系统中使用Docker部署DbGate数据库管理工…

Unstructured - 提取非结构化数据

文章目录 一、关于 Unstructured核心概念&#x1f680; Beta 功能&#xff1a;Chipper 模型 二、安装方式一&#xff1a;使用 PYPI方式二&#xff1a;使用源码本地安装安装依赖库测试 三、在Docker运行库添加shell构建自己的 Docker image交互运行 四、PDF文档解析示例 一、关于…

【随笔】Git 高级篇 -- 快速定位分支 ^|~(二十三)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

关于鸿蒙HarmonyOS,现在关注什么可以更高效

对于移动端来讲&#xff0c;今年最火的关键词除了裁员&#xff0c;我想就是鸿蒙HarmonyOS了。其实鸿蒙的推出也给安卓端的同学提供了职业发展的新路径或方向。 鸿蒙&#xff0c;原本源自中国神话传说的名字&#xff0c;如今已成为了科技领域的焦点&#xff0c;招聘网站上也出现…

【C语言】C语言题库【附源码+持续更新】

欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 目录 1、练习2-1 Programming in C is fun! 2、练习2-3 输出倒三角图案 3、练习2-4 温度转换 4、练习2-6 计算物体自由下落的距离 5、练习2-8 计算摄氏温度 6、练习2-9 整数四则运算 7、练习2-10 计算分段函数[1…

ELFK (Filebeat+ELK)日志分析系统

一. 相关介绍 Filebeat&#xff1a;轻量级的开源日志文件数据搜集器。通常在需要采集数据的客户端安装 Filebeat&#xff0c;并指定目录与日志格式&#xff0c;Filebeat 就能快速收集数据&#xff0c;并发送给 logstash 进或是直接发给 Elasticsearch 存储&#xff0c;性能上相…

【计算机毕业设计】网上宠物商店管理系统——后附源码

&#x1f389;**欢迎来到我的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 一名来自世界500强的资深程序媛&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 在深度学习任务中展现出卓越的能力&#xff0c;包括但不限于…

DSP笔记8-通用GPIO

电源类 AD引脚类 系统相关JTAG 时钟 GPIO (general purpose input output)复用&#xff0c; 复用&#xff0c;I/O引脚&#xff0c;外设的功能引脚&#xff0c; 88个GPIO引脚&#xff0c;通用的输入输出口&#xff0c;功能复用的。 GPIO特点 输入电平与TTL电平兼容。>2.0V…

Redis(Windows版本下载安装和使用)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

使用aspose相关包将excel转成pdf 并导出

SpringBoot 项目 基于aspose相关jar包 将excel 转换成pdf 导出 1、依赖的jar包 &#xff0c; jar获取链接 aspose相关三方jar &#xff0c;下载解压后,在项目路径下建一个libs包&#xff0c;然后将下图两个jar 拷贝至刚新建的libs目录中 2、pom.xml中加入maven引入 <depend…

电脑与多台罗克韦尔AB PLC无线通讯的搭建方法分为几步?

在实际系统中&#xff0c;同一个车间里分布多台PLC&#xff0c;通过上位机集中控制。通常所有设备距离在几十米到上百米不等。在有通讯需求的时候&#xff0c;如果布线的话&#xff0c;工程量较大耽误工期&#xff0c;这种情况下比较适合采用无线通信方式。本方案以组态王和2台…

Logistic 回归为什么适用于二分类问题?

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ Logistic 回归非常适用于二分类问题的主要原因在于它的核心机制和输出特性。首先&#xff0c;Logistic 回归模型基于概率的理念&#xff0c;通过 Sigmoid 函数转换输入特征的线性组合&#xff0c;将任意…

Power Automate custom connector创建示例2-1

一、open power automate custom connector list&#xff1a; Microsoft Power Automate 二、edit custom connector info Authentication type have 4 choice. The example I tested requires Authorization validation, so I chose API Key.

每日一读|经典美文摘抄——等待

等待&#xff0c;是我们和时间的一场博弈。我们凭借着智慧和耐力&#xff0c;与未来做一个交换。 等待的不可知性&#xff0c;是一份考验&#xff0c;一天一天&#xff0c;一步一步走向希望&#xff0c;或者失望。 安娜•卡列尼娜呼喊着&#xff0c;“我是人&#xff0c;我要生…

工业垃圾打包机液压比例阀放大器

液压打包机的种类很多&#xff0c;我们生活中常见的是废纸打包机、金属打包机、纸箱打包机、玉米茎打包机等。然而&#xff0c;牙齿所有的打包机都有他的不同用法。除了我们生活中常见的以外&#xff0c;还有很多其他种类的打包机。让我介绍几件事。一种是捆 绑式打包机设备&am…

QT——第一个项目(HelloWorld)

QT——第一个项目&#xff08;HelloWorld&#xff09; 通过控件创建通过代码的方式实现对象树自己观察 我们之前对QT有了一定的了解&#xff0c;今天我们要用QT来写一段经典代码&#xff1a;HelloWorld。如果还没有看过前两次QT初识的小伙伴可以点击这里&#xff1a; https://b…

CentOS安装MeterSphere并实现无公网IP远程访问本地测试平台

文章目录 前言1. 安装MeterSphere2. 本地访问MeterSphere3. 安装 cpolar内网穿透软件4. 配置MeterSphere公网访问地址5. 公网远程访问MeterSphere6. 固定MeterSphere公网地址 前言 MeterSphere 是一站式开源持续测试平台, 涵盖测试跟踪、接口测试、UI 测试和性能测试等功能&am…