Codeforces Round #699 (Div. 2)A. Space Navigation

A. Space Navigation

time limit per test2 seconds
memory limit per test256 megabytes
inputstandard input
outputstandard output
You were dreaming that you are traveling to a planet named Planetforces on your personal spaceship. Unfortunately, its piloting system was corrupted and now you need to fix it in order to reach Planetforces.

Space can be represented as the XY plane. You are starting at point (0,0), and Planetforces is located in point (px,py).

The piloting system of your spaceship follows its list of orders which can be represented as a string s. The system reads s from left to right. Suppose you are at point (x,y) and current order is si:

if si=U, you move to (x,y+1);
if si=D, you move to (x,y−1);
if si=R, you move to (x+1,y);
if si=L, you move to (x−1,y).
Since string s could be corrupted, there is a possibility that you won’t reach Planetforces in the end. Fortunately, you can delete some orders from s but you can’t change their positions.

Can you delete several orders (possibly, zero) from s in such a way, that you’ll reach Planetforces after the system processes all orders?

Translation:
You dream that you are traveling along your personal spaceship to a planet called planetary power. Unfortunately, its guidance system has been damaged, and now you need to repair it to reach the planetary forces. The space can be expressed as a ⅩY plane. You start at the point (0, 0), and the planetary force is at the point (Px, Py). The test system of your spacecraft follows its command list, which can be expressed as the string s. The system reads s from left to right. Suppose you are at point (x, y) and the current order is si:
if si = U, you move to (x, y+1);
if si = D, you move to (x, y-1);
if si = R , You move to (x-1, y);
if si = L, you move to (x=1, y). The
string s may be damaged, and it is possible that you will not reach the planetary power in the end. Fortunately you can delete some characters from S but you cannot change their position. Can you delete some commands from S (as far as possible, starting from 0), after the system processes all orders, you will reach the planetary force?

Input

The first line contains a single integer t (1≤t≤1000) — the number of test cases.

Each test case consists of two lines. The first line in each test case contains two integers px and py (−105≤px,py≤105; (px,py)≠(0,0)) — the coordinates of Planetforces (px,py).

The second line contains the string s (1≤|s|≤105: |s| is the length of string s) — the list of orders.

It is guaranteed that the sum of |s| over all test cases does not exceed 105.

Translation: The
first line contains a single integer t (1≤t≤1000) the number of test cases.

Each test case consists of two lines. The first line in each test case contains two integers Px and Py (−10 5 ≤Px,Py≤10 5 ; (Px,Py)≠(0,0)) = coordinates of planetary force (Px,Py) .

The second line contains the string s (1≤| s| ≤105:| s| is the length of the string s) - a list of orders.

Ensure that | s| does not exceed 10 5 in all test cases .

Output

For each test case, print “YES” if you can delete several orders (possibly, zero) from s in such a way, that you’ll reach Planetforces. Otherwise, print “NO”. You can print each letter in any case (upper or lower).

Example

inputCopy

6
10 5
RRRRRRRRRRUUUUU
1 1
UDDDRLLL
-3 -5
LDLDLDDDR
1 2
LLLLUU
3 -2
RDULRLLDR
-1 6
RUDURUUUUR

outputCopy

YES
YES
YES
NO
YES
NO

Note
In the first case, you don’t need to modify s, since the given s will bring you to Planetforces.

In the second case, you can delete orders s2, s3, s4, s6, s7 and s8, so s becomes equal to “UR”.

In the third test case, you have to delete order s9, otherwise, you won’t finish in the position of Planetforces.

Problem-solving ideas:

I use the structure position to record a coordinate.
According to the given key coordinates, I traverse the input characters one by one (that is, the so-called walking direction).
When x reaches Px, the following L and R are ignored;
when y reaches Py, ignore the following D, U;

Insert picture description here

Reference Code:

#include<iostream>
using namespace std;

struct position{
    
    
    int x,y;
};
int main(void)
{
    
    
    position p,m;
    int t;

    cin>>t;
    char q;
    for(int i=0;i<t;i++){
    
    
        cin>>p.x>>p.y;
        m.x=m.y=0;
        getchar();
        q='q';
        while(q!='\n'){
    
    
            scanf("%c",&q);
            if(q=='\n'  )
                break;
			if((m.x==p.x && (q=='R'||q=='L')) || (p.x>0&&q=='L') || (p.x<0&&q=='R')){
    
    
				continue;
			}
			if((m.y==p.y && (q=='U'||q=='D')) || (p.y>0&&q=='D') ||(p.y<0&&q=='U')){
    
    
                continue;
			}

            switch(q){
    
    
            case 'U':m.y++;break;
            case 'D':m.y--;break;
            case 'R':m.x++;break;
            case 'L':m.x--;break;
            }
        }
        if(m.x==p.x && m.y==p.y)
            cout<<"YES"<<endl;
        else
            cout<<"NO"<<endl;

    }
    return 0;
}

If you don’t understand, welcome to interrupt;
if you learn, leave a like and encourage each other! ! !

Guess you like

Origin blog.csdn.net/weixin_45950429/article/details/113761235