Time Limit: 1000MS | Memory Limit: 65535KB | 64bit IO Format: %lld & %llu |
Description
P酱是个可爱的男孩子,有一天他在野外冒险,不知不觉中走入了一块神奇的地方。他在
各个时刻他允许移动的方向由一个字符串给出,字符串只包含U
、D
、L
、R
四种字符,其中U
表示向上(D
表示向下(L
表示向左(R
表示向右(
字符串的第
现在P酱在坐标原点,即
Input
第一行包含一个正数
接下来每组数据包含两行,第一行包含三个整数 U
,D
,L
,R
四种字母。
Output
对于每组数据输出一行,表示P酱到达出口的最早时刻。如果他无法在-1
。
Sample Input
2
1 -1 5
LDRDR
-2 1 8
RRUDDLRU
Sample Output
3
-1
Hint
第一组样例:
- P酱在
- P酱在
- P酱在
超时到死,一直深搜一直wa,简直要崩溃了,原来只是一个规律,,,,,
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; char str[100100]; int main() { int T; scanf("%d",&T); while(T--) { memset(str,' ',sizeof(str)); int x,y,t; scanf("%d%d%d",&x,&y,&t); // getchar(); scanf("%s",str); long long u,d,l,r; u=d=r=l=0; if(x>=0) r=x; else l=x*-1; if(y>=0) u=y; else d=y*-1; int ans=0; for(int i=0;i<t;i++) { if(u==0&&d==0&&l==0&&r==0) { ans=i; break; } if(str[i]=='U'&&u>0) u--; else if(str[i]=='D'&&d>0) d--; else if(str[i]=='L'&&l>0) l--; else if(str[i]=='R'&&r>0) r--; } if(x==0&&y==0) printf("0 "); else if(ans!=0) // printf("%s ",str); printf("%d ",ans); else printf("-1 "); } return 0; }