给你一个字符串,代表机器人的行动方向,请你删除这个字符串的一个子串,使机器人终点并不改变,有多个子串满足条件时,输出最短的那个。

就是找字符串中机器人轨迹最短的重复。

设置从开始,记录每一步的坐标以及第几步step扔进一个结构体,排序后统计。如果是同一位置就是相同,比较它们step差多少,就是删去子串的长度,更新答案即可。

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <vector>
#include <queue>
#include <map>
#include <set>
#define ms(a,b) memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
typedef double ab;
const int N=1e6+10;
string s;
struct node
{int x,y,step;bool operator < (const node A) const{if(x==A.x&&y==A.y) return step>A.step;if(x==A.x) return y>A.y;return x>A.x;}
};
priority_queue<node>q;
int main()
{int n,t;cin>>t;while(t--){cin>>n>>s;int x=0,y=0;q.empty();q.push({x,y,0});for(int i=0;i<n;i++){if(s[i]=='L') --y;if(s[i]=='R') ++y;if(s[i]=='U') --x;if(s[i]=='D') ++x;q.push({x,y,i+1});}int ans=INF,l,r;node pre={-INF,-INF,-INF};while(!q.empty()){node tmp=q.top();q.pop();if(tmp.x==pre.x&&tmp.y==pre.y){if(tmp.step-pre.step<ans){l=pre.step+1;r=tmp.step;ans=tmp.step-pre.step;}}pre=tmp;}if(ans==INF) cout<<"-1"<<endl;else cout<<l<<" "<<r<<endl;}//system("pause");
}

Codeforce 1296 C. Yet Another Walking Robot相关推荐

  1. Yet Another Walking Robot CodeForces - 1296C

    There is a robot on a coordinate plane. Initially, the robot is located at the point (0,0)(0,0). Its ...

  2. C#LeetCode刷题之#874-模拟行走机器人​​​​​​​(Walking Robot Simulation)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4038 访问. 机器人在一个无限大小的网格上行走,从点 (0, 0 ...

  3. Walking Robot

    https://codeforces.com/contest/1154/problem/D 题意:有个机器人在0位置处,现在要走到位置n.机器人现在有一个电池容量为a,还有一个蓄电池容量为b(一开始都 ...

  4. Codeforce 1296 E String Coloring

    给一个字符串,给字符串所有字符染色,相邻两个颜色不同的字符可以交换,问至少需要多少种颜色,可以使得经过任意次数交换之后字符串满足字典序. 要想一个字符一直交换到它的字典序位置,也就是说他前面字典序比它 ...

  5. Leetcode 874. Walking Robot Simulation

    文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书 1. Description 2. Solution class Solution { public:int ro ...

  6. LeetCode.874-走路机器人模拟(Walking Robot Simulation)

    这是悦乐书的第335次更新,第360篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第205题(顺位题号是874).网格上的机器人从点(0,0)开始并朝北.机器人可以接收三 ...

  7. Codeforces Round #552 (Div. 3)D、E题解

    D. Walking Robot 题意 机器人在一维坐标轴上从0走到x,中途可以在有光的地方可以选择给太阳能电池充电,每次移动都要消耗一单位电,蓄电池容量为a,太阳能电池容量为b,一开始都是满电,问机 ...

  8. 设计模式示例_状态设计模式示例

    设计模式示例 本文是我们名为" Java设计模式 "的学院课程的一部分. 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们. 您将了解模式如此重要的原因 ...

  9. 基础算法 —— 模拟思维

    [概述] 模拟,是根据实际问题建立模型,模拟实际按程序走一遍,最终求出答案. 思维,则是与逻辑思维有关,其需要针对题意.数据范围等抽丝剥茧抽离出有用的信息,从而得出一个结果. 对于一般的模拟,直接根据 ...

  10. C#LeetCode刷题-贪心算法

    贪心算法篇 # 题名 刷题 通过率 难度 44 通配符匹配 17.8% 困难 45 跳跃游戏 II 25.5% 困难 55 跳跃游戏 30.6% 中等 122 买卖股票的最佳时机 II C#LeetC ...

最新文章

  1. OneGame V1.0.2 发布,让运营游戏不再是梦想
  2. 前端开发中的 正则表达式 及常用正则表达式大全
  3. python自带 python2转python3 代码工具
  4. discuz登陆首页后提示style_1_commen.css,关于Discuz用户面板必须刷新才能显示登录状态的问题解决办法...
  5. 【解决方案】MTU现场能源发电机,点亮孤岛的文明之光
  6. CMM (培训计划-Training Program)
  7. android之http协议编程(源码ppt),Android网络编程(八)源码解析OkHttp中篇[复用连接池]...
  8. VTK:参数对象用法实战
  9. VTK:几何对象之PolygonIntersection
  10. caffe matio问题
  11. 字符串匹配的KMP算法(转)
  12. php-resque 轻量级队列
  13. 高效办公软件推荐——屏幕录制类
  14. 计算机部分应用显示模糊,电脑应用显示模糊怎么办
  15. 元宇宙通证-十、互联网发展史全景图
  16. zcmu-1919: kirito(多重背包——二进制优化)
  17. I.MX6U嵌入式Linux应用编程学习
  18. 计算机视觉传达论文库,计算机图形视觉传达论文
  19. Latex矩阵和表达式组的绘制
  20. error:Error parsing XML:unbound prefix

热门文章

  1. 解放军--女“黑客”
  2. python读取文件名包含某字符的文件_Python 在当前和子目录中查找文件名中包含指定字符串的文件...
  3. 5号AA电池,7号AAA电池
  4. Halcon create_pose算子帮助文档翻译
  5. hdu5510Bazinga
  6. 爬虫初学——爬取京东商品的评论(二)
  7. 计算机如何设置保存到桌面,如何设置电脑桌面背景
  8. 弄懂了阴阳转换,穴位或为丹田的宿
  9. math.floor()函数
  10. gofpdf 学习笔记