学生
(kasaoluo)
21
诶,等一下,为什么WA了一个点
#include <bits/stdc++.h>
#define int long long
using namespace std;
struct node {
int x, y;
} f[1000005];
map<int, int> mp;
signed main() {
int n, r, c;
cin >> n >> r >> c;
for (int i = 1; i <= n; i++) {
char cc;
cin >> cc;
int dx = 0, dy = 0;
if (cc == 'N') {
dx = -1;
} else if (cc == 'S') {
dx = 1;
} else if (cc == 'W') {
dy = -1;
} else {
dy = 1;
}
f[i].x = f[i - 1].x + dx;
f[i].y = f[i - 1].y + dy;
int k = f[i].x * 1000000007ll + f[i].y;
mp[k] = i;
int x = f[i].x - r;
int y = f[i].y - c;
k = x * 1000000007ll + y;
if (mp.count(k)) {
cout << 1;
} else {
cout << 0;
}
}
}
CZF2919
(陈泽樊)
22
因为当f[i].x==x&&f[i].y==y的·情况没考虑
1 个赞
学生
(kasaoluo)
23
当 f[i].x==x&&f[i].y==y,的时候,答案正确?还是什么
学生
(kasaoluo)
27
#include <bits/stdc++.h>
#define int long long
using namespace std;
struct node {
int x, y;
} f[1000005];
map<int, int> mp;
signed main() {
int n, r, c;
cin >> n >> r >> c;
for (int i = 1; i <= n; i++) {
char cc;
cin >> cc;
int dx = 0, dy = 0;
if (cc == 'N') {
dx = -1;
} else if (cc == 'S') {
dx = 1;
} else if (cc == 'W') {
dy = -1;
} else {
dy = 1;
}
f[i].x = f[i - 1].x + dx;
f[i].y = f[i - 1].y + dy;
int k = f[i].x * 1000000007ll + f[i].y;
mp[k] = i;
int x = f[i].x - r;
int y = f[i].y - c;
k = x * 1000000007ll + y;
if (mp.count(k)||f[i].x==x&&f[i].y==y) {
cout << 1;
} else {
cout << 0;
}
}
}
学生
(kasaoluo)
30
#include <bits/stdc++.h>
#define int long long
using namespace std;
struct node {
int x, y;
} f[1000005];
set<pair<int, int>> mp;
signed main() {
int n, r, c;
cin >> n >> r >> c;
for (int i = 1; i <= n; i++) {
char cc;
cin >> cc;
int dx = 0, dy = 0;
if (cc == 'N') {
dx = -1;
} else if (cc == 'S') {
dx = 1;
} else if (cc == 'W') {
dy = -1;
} else {
dy = 1;
}
f[i].x = f[i - 1].x + dx;
f[i].y = f[i - 1].y + dy;
mp.insert({f[i].x, f[i].y});
int x = f[i].x - r;
int y = f[i].y - c;
if (mp.count({x, y}) || (f[i].x == x && f[i].y == y)) {
cout << 1;
} else {
cout << 0;
}
}
}
还是WA90