CF1481A Space Navigation

A. Space Navigation

赛时我关注了一下做出提的人数,我在 6min 的时候提交,一次通过,但此时只有大概 800 个人通过,有点令人大跌眼镜。

分析题目,我们其实可以根据 \(s\) 算出这个飞船在 \(x\) 轴正负方向上和 \(y\) 轴正负方向上最远可以到达的坐标位置,四个量算出来后,和目的地的坐标一比较,答案自现。

//Don't act like a loser.
//This code is written by huayucaiji
//You can only use the code for studying or finding mistakes
//Or,you'll be punished by Sakyamuni!!!
#include<bits/stdc++.h>
#define int long long
using namespace std;

int read() {
	char ch=getchar();
	int f=1,x=0;
	while(ch<'0'||ch>'9') {
		if(ch=='-')
			f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9') {
		x=x*10+ch-'0';
		ch=getchar();
	}
	return f*x;
}

int n,u,d,l,r,m;

signed main() {
	int t=read();
	while(t--) {
		cin>>n>>m;
		string s;
		cin>>s;
		int sz=s.size();
		u=l=d=r=0;
		for(int i=0;i<sz;i++) {
			if(s[i]=='U') {
				u++;
			}
			if(s[i]=='D') {
				d++;
			}
			if(s[i]=='L') {
				l++;
			}
			if(s[i]=='R') {
				r++;
			}
		}
		if(n>0) {
			if(r<n) {
				printf("NO\n");
				continue;
			}
		}
		else {
			if(l<(-n)) {
				printf("NO\n");
				continue;
			}
		}
		if(m>0) {
			if(u<m) {
				printf("NO\n");
				continue;
			}
		}
		else {
			if(d<(-m)) {
				printf("NO\n");
				continue;
			}
		}
		printf("YES\n");
	}
	return 0;
}
posted @ 2021-02-06 15:14  huayucaiji  阅读(141)  评论(0编辑  收藏  举报