Codeforce 1296 C. Yet Another Walking Robot
给你一个字符串,代表机器人的行动方向,请你删除这个字符串的一个子串,使机器人终点并不改变,有多个子串满足条件时,输出最短的那个。
就是找字符串中机器人轨迹最短的重复。
设置从开始,记录每一步的坐标以及第几步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相关推荐
- 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 ...
- C#LeetCode刷题之#874-模拟行走机器人(Walking Robot Simulation)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4038 访问. 机器人在一个无限大小的网格上行走,从点 (0, 0 ...
- Walking Robot
https://codeforces.com/contest/1154/problem/D 题意:有个机器人在0位置处,现在要走到位置n.机器人现在有一个电池容量为a,还有一个蓄电池容量为b(一开始都 ...
- Codeforce 1296 E String Coloring
给一个字符串,给字符串所有字符染色,相邻两个颜色不同的字符可以交换,问至少需要多少种颜色,可以使得经过任意次数交换之后字符串满足字典序. 要想一个字符一直交换到它的字典序位置,也就是说他前面字典序比它 ...
- Leetcode 874. Walking Robot Simulation
文章作者:Tyan 博客:noahsnail.com | CSDN | 简书 1. Description 2. Solution class Solution { public:int ro ...
- LeetCode.874-走路机器人模拟(Walking Robot Simulation)
这是悦乐书的第335次更新,第360篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第205题(顺位题号是874).网格上的机器人从点(0,0)开始并朝北.机器人可以接收三 ...
- Codeforces Round #552 (Div. 3)D、E题解
D. Walking Robot 题意 机器人在一维坐标轴上从0走到x,中途可以在有光的地方可以选择给太阳能电池充电,每次移动都要消耗一单位电,蓄电池容量为a,太阳能电池容量为b,一开始都是满电,问机 ...
- 设计模式示例_状态设计模式示例
设计模式示例 本文是我们名为" Java设计模式 "的学院课程的一部分. 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们. 您将了解模式如此重要的原因 ...
- 基础算法 —— 模拟思维
[概述] 模拟,是根据实际问题建立模型,模拟实际按程序走一遍,最终求出答案. 思维,则是与逻辑思维有关,其需要针对题意.数据范围等抽丝剥茧抽离出有用的信息,从而得出一个结果. 对于一般的模拟,直接根据 ...
- C#LeetCode刷题-贪心算法
贪心算法篇 # 题名 刷题 通过率 难度 44 通配符匹配 17.8% 困难 45 跳跃游戏 II 25.5% 困难 55 跳跃游戏 30.6% 中等 122 买卖股票的最佳时机 II C#LeetC ...
最新文章
- OneGame V1.0.2 发布,让运营游戏不再是梦想
- 前端开发中的 正则表达式 及常用正则表达式大全
- python自带 python2转python3 代码工具
- discuz登陆首页后提示style_1_commen.css,关于Discuz用户面板必须刷新才能显示登录状态的问题解决办法...
- 【解决方案】MTU现场能源发电机,点亮孤岛的文明之光
- CMM (培训计划-Training Program)
- android之http协议编程(源码ppt),Android网络编程(八)源码解析OkHttp中篇[复用连接池]...
- VTK:参数对象用法实战
- VTK:几何对象之PolygonIntersection
- caffe matio问题
- 字符串匹配的KMP算法(转)
- php-resque 轻量级队列
- 高效办公软件推荐——屏幕录制类
- 计算机部分应用显示模糊,电脑应用显示模糊怎么办
- 元宇宙通证-十、互联网发展史全景图
- zcmu-1919: kirito(多重背包——二进制优化)
- I.MX6U嵌入式Linux应用编程学习
- 计算机视觉传达论文库,计算机图形视觉传达论文
- Latex矩阵和表达式组的绘制
- error:Error parsing XML:unbound prefix