题解 CF1481A 【Space Navigation】
题意
你现在在
给定一个只含有 L,R,U,D 的字符串。问你是否可以删除其中的一些操作(几个字母)使得你最后能正好到达
思路
读入字符串后先统计,如果不删除就能正好到达的话就直接输出 YES。
否则判断四个方向的字母数量够不够减少到正好到达
代码
#include <bits/stdc++.h>
using namespace std;
int T;
int x, y;
string s;
int main() {
cin >> T;
while(T--) {
scanf("%d%d", &x, &y);
cin >> s;
int u = 0, d = 0, l = 0, r = 0;
for(int i = 0; i < s.length(); ++i) { // 统计
if (s[i] == 'U') u++;
if (s[i] == 'D') d++;
if (s[i] == 'L') l++;
if (s[i] == 'R') r++;
}
int xx = 0, yy = 0;
xx += r; xx -= l;
yy += u; yy -= d; // 求出现在到达的位置
if (xx == x && yy == y) puts("YES");
else {
bool flag = true;
if (xx > x) { // 判断是否够减,注意加上 abs
if (r < abs(xx - x)) flag = false;
}
if (xx < x) {
if (l < abs(xx - x)) flag = false;
}
if (yy > y) {
if (u < abs(yy - y)) flag = false;
}
if (yy < y) {
if (d < abs(yy - y)) flag = false;
}
if (flag) puts("YES");
else puts("NO");
}
}
return 0;
}