UESTC 758 P酱的冒险旅途
2016-03-05 15:07
246 查看
P酱的冒险旅途
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酱在最短的时间内离开这里吧~
第一行包含一个正数 T (T <= 100),表示数据组数。
接下来每组数据包含两行,第一行包含三个整数 x,y,t (-10^5 <= x,y <= 10^5, 0< t <= 10^5);第二行包含一个长度为t的字符串,第i个字符表示在i时刻他能移动的方向,字符串只包含“U”,“D”,“L”,“R”四种字母。
对于每组数据输出一行,表示P酱到达出口的最早时刻。如果他无法在t时刻内到达出口,输出“-1”。
2
1 -1 5
LDRDR
-2 1 8
RRUDDLRU
3
-1
第一组样例:
1、P酱在0时刻位于原点(0, 0),他只能向左移动,但他选择不走。
2、P酱在1时刻依然位于原点(0, 0),他只能向下移动,于是他向下移动到了(0,-1)
3、P酱在2时刻位于(0,-1),他只能向右移动,于是他移动到了出口(1, -1),所以在3时刻,P酱离开了这片区域!
第五届ACM趣味程序设计竞赛第二场(正式赛)
思路:只需要向坐标走相应的步数就行,其他时间原地不动,比如(-1,2)出现LUU的时候就是最小时间
Description
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 (-10^5 <= x,y <= 10^5, 0< t <= 10^5);第二行包含一个长度为t的字符串,第i个字符表示在i时刻他能移动的方向,字符串只包含“U”,“D”,“L”,“R”四种字母。
Output
对于每组数据输出一行,表示P酱到达出口的最早时刻。如果他无法在t时刻内到达出口,输出“-1”。
Sample Input
21 -1 5
LDRDR
-2 1 8
RRUDDLRU
Sample Output
3-1
Hint
第一组样例:1、P酱在0时刻位于原点(0, 0),他只能向左移动,但他选择不走。
2、P酱在1时刻依然位于原点(0, 0),他只能向下移动,于是他向下移动到了(0,-1)
3、P酱在2时刻位于(0,-1),他只能向右移动,于是他移动到了出口(1, -1),所以在3时刻,P酱离开了这片区域!
Source
第五届ACM趣味程序设计竞赛第二场(正式赛)思路:只需要向坐标走相应的步数就行,其他时间原地不动,比如(-1,2)出现LUU的时候就是最小时间
#include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <iostream> #define Max(a,b) (a>b?a:b) #define Min(a,b) (a<b?a:b) using namespace std; char s[100010]; int main() { int T; int x,y,t; scanf("%d",&T); while(T--) { scanf("%d%d%d",&x,&y,&t); scanf("%s",s); //puts(s); char xx,yy; int tx=abs(x); int ty=abs(y); xx=x<0?'L':'R'; yy=y<0?'D':'U'; int ans=-1; for(int i=0;i<t;++i) { if(tx==0&&ty==0)//这道题t时间之内不包括t,也就是当你是t时间到达终点就是失败 { ans=i; break; } if(tx>0&&s[i]==xx) tx--; if(ty>0&&s[i]==yy) ty--; } printf("%d\n",ans); } return 0; }
相关文章推荐
- openstack-glance-api.service start request repeated too quickly, refusing to start
- HDU 1297 Children’s Queue 递归+大数
- iOS UIActionSheet提示框
- ugui 中有关grid layout group的适配问题
- UVA 10689 Yet another Number Sequence(矩阵快速幂求Fib数列)
- UVA 10689 Yet another Number Sequence(矩阵快速幂求Fib数列)
- UITapGestureRecognizer 的使用,判断点击哪个控件
- QuickSort 快排算法 java
- require笔札
- Handler中的四种更新UI写法
- poj--3061--Subsequence(贪心)
- poj--3061--Subsequence(贪心)
- UESTC 758-P酱的冒险旅途【BFS】
- 今日开讲—— easyui-combobox动态赋值
- LeetCode 51 - N-Queens II
- Ngui 拖拽到底部,直接循环到顶部
- Uva1594 Ducci Sequence
- poj Subsequence 3061 (高效&DP)
- LeetCode 51 - N-Queens
- Android几种在其他线程中更新UI的方法