社区讨论
记搜求调
P1002[NOIP 2002 普及组] 过河卒参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhji7jfr
- 此快照首次捕获于
- 2025/11/04 02:59 4 个月前
- 此快照最后确认于
- 2025/11/04 02:59 4 个月前
dp已过,想写总结,记搜就是调不对QWQ
CPP#include <bits/stdc++.h>
#define AKIOI ios::sync_with_stdio(false); cin.tie(0); cout.tie(0)
#define AKNOI return 0
#define int long long
#define endl "\n"
using namespace std;
const int N = 5e3 + 100;
const int TMP = 30;
int a[N + TMP][N + TMP], g[N + TMP][N + TMP], f[N + TMP][N + TMP];
int n, m;
int dfs(int x, int y) {
if (f[x + TMP][y + TMP]) return f[x + TMP][y + TMP];
if (y == 0 && g[x + TMP][y + TMP] == 0) return f[x + TMP][y + TMP] = 1;
else if (g[x + TMP][y + TMP] == 0) return f[x + TMP][y + TMP] = dfs(x - 1, y) + dfs(x, y - 1);
}
void book(int x, int y) {
g[x - 1 + TMP][y - 2 + TMP] = 1; //加一个向右偏移量,防止越界
g[x - 2 + TMP][y - 1 + TMP] = 1;
g[x - 2 + TMP][y + 1 + TMP] = 1;
g[x - 1 + TMP][y + 2 + TMP] = 1;
g[x + 1 + TMP][y - 2 + TMP] = 1;
g[x + 2 + TMP][y - 1 + TMP] = 1;
g[x + 1 + TMP][y + 2 + TMP] = 1;
g[x + 2 + TMP][y + 1 + TMP] = 1;
g[x + TMP][y + TMP] = 1;
}
signed main() {
AKIOI;
int x, y;
cin >> n >> m >> x >> y;
book(x, y);
for (int i = 0; i <= n && g[i + TMP][0 + TMP] == 0; i ++) f[i + TMP][0 + TMP] = 1;
for (int i = 0; i <= m && g[0 + TMP][i + TMP] == 0; i ++) f[0 + TMP][i + TMP] = 1;
cout << dfs(n, m);
AKNOI;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...