[ABC303C] Dash
直接模拟即可。
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
int dx[] = { 0, 0, -1, 1 };
int dy[] = { -1, 1, 0, 0 };
int n, m, h, k;
string s;
set<pair<int, int> > st;
int main()
{
scanf("%d%d%d%d", &n, &m, &h, &k);
cin >> s;
int nowx = 0, nowy = 0;
for (int i = 1; i <= m; i++)
{
int x, y;
scanf("%d%d", &x, &y);
st.insert(make_pair(x, y));
}
for (int i = 0; i < s.size(); i++)
{
char c = s[i];
if (c == 'R') nowx++;
else if (c == 'L') nowx--;
else if (c == 'D') nowy--;
else nowy++;
h--;
if (h < 0)
{
printf("No\n");
return 0;
}
if (st.count(make_pair(nowx, nowy)) && h < k)
{
st.erase(make_pair(nowx, nowy));
h = k;
}
}
printf("Yes\n");
return 0;
}

浙公网安备 33010602011771号