P酱的冒险旅途(思维)
P酱的冒险旅途
Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
P酱是个可爱的男孩子,有一天他在野外冒险,不知不觉中走入了一块神奇的地方。他在0时刻进入这个地方,每一时刻他都只能向某一特定的方向移动长度为1的距离,当然他也可以选择不移动。移动需要花费1的时间。
各个时刻他允许移动的方向由一个字符串给出,字符串只包含U、D、L、R四种字符,其中U表示向上(y轴正方向)移动,D表示向下(y轴负方向)移动,L表示向左(x轴负方向)移动,R表示向右(x轴正方向)移动。
字符串的第x个字符代表了第x时刻P酱可以移动的方向,字符串的长度只有t,也就是说,超过t时刻,P酱就要被邪恶的魔王大爷抓走了~
现在P酱在坐标原点,即(0,0)点,而出口在(x,y)点,P酱希望在规定的时间t内尽快走到出口。帮助P酱在最短的时间内离开这里吧~
Input
第一行包含一个正数 T (T≤100),表示数据组数。
接下来每组数据包含两行,第一行包含三个整数 x,y,t (−105≤x,y≤105,0<t≤105);第二行包含一个长度为t的字符串,第i个字符表示在i时刻他能移动的方向,字符串只包含U,D,L,R四种字母。
Output
对于每组数据输出一行,表示P酱到达出口的最早时刻。如果他无法在t时刻内到达出口,输出-1。
Sample input and output
| Sample Input | Sample Output |
|---|---|
2 |
3 |
Hint
第一组样例:
- P酱在0时刻位于原点(0,0),他只能向左移动,但他选择不走。
- P酱在1时刻依然位于原点(0,0),他只能向下移动,于是他向下移动到了(0,−1)
- P酱在2时刻位于(0,−1),他只能向右移动,于是他移动到了出口(1,−1),所以在3时刻,P酱离开了这片区域!
题解:受着上题的影响,于是苦逼的我果断暴力了(想都没想);然后结果可想而知,肯定超时了。10的5次方,每次两种选择,也就是2的10万次方,不超时才算有鬼了;
没浪费时间直接按照题意写了下,就A了;
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
#define mem(x,y) memset(x,y,sizeof(x))
#define SI(x) scanf("%d",&x)
#define PI(x) printf("%d",x)
#define P_ printf(" ")
const int INF=0x3f3f3f3f;
const int MAXN=1e5+;
char s[MAXN];
int x,y,t;
int main(){
int T;
SI(T);
while(T--){
scanf("%d%d%d",&x,&y,&t);
scanf("%s",s+);
int ans=,nx=,ny=,flot=;
for(int i=;s[i];i++,ans++){
if(x==nx&&y==ny){
flot=;break;
}
if(s[i]=='L'){
if(x<=&&nx>x)nx--;
}
if(s[i]=='R'){
if(x>=&&nx<x)nx++;
}
if(s[i]=='U'){
if(y>=&&ny<y)ny++;
}
if(s[i]=='D'){
if(y<=&&ny>y)ny--;
}
}
if(flot)printf("%d\n",ans);
else puts("-1");
}
return ;
}
暴力超时了,也贴下吧:
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
#define mem(x,y) memset(x,y,sizeof(x))
#define SI(x) scanf("%d",&x)
#define PI(x) printf("%d",x)
#define P_ printf(" ")
const int INF=0x3f3f3f3f;
const int MAXN=1e5+;
char s[MAXN];
int x,y,t;
int ans;
void dfs(int nx,int ny,int cur){
if(cur>t)return;
if(nx==x&&ny==y){
ans=min(ans,cur-);
return;
}
dfs(nx,ny,cur+);
if(s[cur]=='L')dfs(nx-,ny,cur+);
if(s[cur]=='R')dfs(nx+,ny,cur+);
if(s[cur]=='U')dfs(nx,ny+,cur+);
if(s[cur]=='D')dfs(nx,ny-,cur+);
}
int main(){
int T;
SI(T);
while(T--){
scanf("%d%d%d",&x,&y,&t);
scanf("%s",s+);
ans=INF;
dfs(,,);
if(ans==INF)puts("-1");
else printf("%d\n",ans);
}
return ;
}
P酱的冒险旅途(思维)的更多相关文章
- UESTC--758--P酱的冒险旅途(模拟)
P酱的冒险旅途 Time Limit: 1000MS Memory Limit: 65535KB 64bit IO Format: %lld & %llu Submit Status ...
- OO生存指南P1
写在OO作业之前 在正式写oo作业之前,先说一些“废话”吧,就当是对oo的吐槽. 事实上,早在大一的时候,听说数分很难,然而事实证明数分并没有有让我通宵的体验. 在大二上的时候有一门课叫祭祖,号称是第 ...
- 基于Vue的WebApp项目开发(五)
实现图片分享列表 步骤一:新增图片列表文件photolist.vue <template> <div id="tml"> 图片分享页面 </div&g ...
- 0915 N校联考
树上路径(phantasm) 题目背景 Akari是一个普通的初中生. 题目描述 Akari的学校的校门前生长着一排n棵树,从西向东依次编号为1∼n.相邻两棵树间的距离都是1.Akari上课的教学楼恰 ...
- 批判性思维——Asking The Right Questions
我们生活在一个纷繁复杂的数字世界中,每天都在信息海洋中遨游.如果不想被其淹没,继而成为别人思想的傀儡,就有必要对你接受的信息进行批判.筛选,自己决定该相信什么不该相信什么,进而形成自己的观点,而不是一 ...
- papi酱视频因违规遭下线整改,你知道原因吗?
今日4月18日,在微信上的一篇<papi酱遭广电总局封杀 罗振宇1200万恐打水漂>的文章迅速转了起来,说的就是现在网红第一人“papi酱”的视频被广电总局责令下架的消息.箭头直指papi ...
- 计蒜客 28319.Interesting Integers-类似斐波那契数列-递推思维题 (Benelux Algorithm Programming Contest 2014 Final ACM-ICPC Asia Training League 暑假第一阶段第二场 I)
I. Interesting Integers 传送门 应该是叫思维题吧,反正敲一下脑壳才知道自己哪里写错了.要敢于暴力. 这个题的题意就是给你一个数,让你逆推出递推的最开始的两个数(假设一开始的两个 ...
- hdu 5475(打破固定思维OR线段树)
An easy problem Time Limit: 8000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- <学会提问-批判性思维指南>运用
引子 这是我第二遍读此书,我认为并且希望这次阅读对我整个人生产生深远的影响.人一出生身上带着母体的抵抗力,大概6个月以后开始渐渐消失,靠自身的抵抗力活着.30岁前很多人会带着上天给的运气,终有一天,用 ...
随机推荐
- Unable to execute dex: Multiple dex files define Lorg/ap (
解决这个问题的方法,直接把commons-collections.jar这个jar包删除,一定要删干净啊,各个地方看一下,再clean下,应该没问题了!根据这个英文的目录指示就是Unable to e ...
- Erlang语言介绍
Erlang (/ˈɜrlæŋ/ er-lang) is a general-purpose concurrent, garbage-collected programming language an ...
- 在android画面切换时设置跟随变动的小圆圈
首先还是老规律,上传两张效果图: 第一张图: 第二张图: 前言:我们经常在使用各类安卓APP的时候发现会有如图所示的小圆圈显示当前页所在的,甚至一般来说我们的android桌面上也应该有 ...
- VC实现图片拖拽及动画
基础知识 1.PictureBox控件的使用 2.加载位图文件 1.通过文件路径获得位图句柄 //获得位图句柄 void CMovePictureDlg::GetHandleFromPath(CSt ...
- Qt widget--杭州小笼包
1,QPainter::scale(double,double);第一个参数水培方向缩放 shear剪切 QPainter::rotate()旋转,旋转度数,rotate QPainter::tran ...
- 【每日一MOS】-RAC and Sequences (853652.1)
序列有四种组合: a. CACHE + NOORDER b. CACHE + ORDER c. NOCACHE + NOORDER d. NOCACHE + ORDER 即使在单例配置下,当有大量的s ...
- 命名空间“Aspose”中不存在类型或命名空间名称“Slides”。
有可能引用的dll与项目的 .netFramework版本不同,需要确认两个版本是否相同.如果不同,项目右键->属性->应用程序.选择和引用的dll相同的版本.
- 后缀数组da3模板
在做poj2406的时候...按论文给的rmq模板会超内存...然后网上找了http://blog.csdn.net/libin56842/article/details/46310425这位大爷的d ...
- 杭电 HDU 4608 I-number
http://acm.hdu.edu.cn/showproblem.php?pid=4608 听说这个题是比赛的签到题......无语..... 问题:给你一个数x,求比它大的数y. y的要求: 1. ...
- WIN7 以下创建cocos2d-x3.0+lua项目
用命令行生成和执行项目 无需打开VS 配置完环境 CMD执行 cocos new helloWold -p com.test -l lua -d E:\cocos2dx 来创建项目 cocos ...