UESTC 758 P酱的冒险旅途

来源:互联网 发布:php和前端那个难 编辑:程序博客网 时间:2024/05/01 11:16

题目链接:http://acm.uestc.edu.cn/#/problem/show/758



思路:如果暴力搜索的话会超时,所以说有技巧,每一步可以选择走或者不走,所以说只需要查看所给字符串中是否含有能从原点到目标点的步伐就可以了,即记录L,R,U,D的数量,然后验证


ac代码:

#include<stdio.h>#include<math.h>#include<string.h>#include<stack>#include<set>#include<queue>#include<vector>#include<iostream>#include<algorithm>#define MAXN 1010000#define ll long long#define INF 0xfffffff#define mem(x) memset(x,0,sizeof(x))#define PI acos(-1)#define eps 1e-8using namespace std;ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}ll lcm(ll a,ll b){return a/gcd(a,b)*b;}ll powmod(ll a,ll b,ll MOD){ll ans=1;while(b){if(b%2)ans=ans*a%MOD;a=a*a%MOD;b/=2;}return ans;}double dpow(double a,ll b){double ans=1.0;while(b){if(b%2)ans=ans*a;a=a*a;b/=2;}return ans;}//headchar s[MAXN];int x,y,ti;int main(){int t,i;scanf("%d",&t);while(t--){scanf("%d%d%d",&x,&y,&ti);scanf("%s",s);if(x==0&&y==0){printf("0\n");continue;}int len=strlen(s);int l=0,r=0,u=0,d=0;if(x>0)r=x;elsel=abs(x);if(y>0)u=y;elsed=abs(y);int ans=0;for(i=0;i<len;i++){if(s[i]=='U'&&u>0){u--;if(ans<=ti&&l==0&&r==0&&u==0&&d==0)break;}else if(s[i]=='D'&&d>0){d--;if(ans<=ti&&l==0&&r==0&&u==0&&d==0)break;}else if(s[i]=='L'&&l>0){l--;if(ans<=ti&&l==0&&r==0&&u==0&&d==0)break;}else if(s[i]=='R'&&r>0){r--;if(ans<=ti&&l==0&&r==0&&u==0&&d==0)break;}ans++;}if(ans<=ti&&l==0&&r==0&&u==0&&d==0)printf("%d\n",ans+1);elseprintf("-1\n");}return 0;}


0 0
原创粉丝点击