记录编号 |
589247 |
评测结果 |
AAAAAAAAAA |
题目名称 |
勇者 |
最终得分 |
100 |
用户昵称 |
yrtiop |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.428 s |
提交时间 |
2024-07-04 14:32:57 |
内存使用 |
79.88 MiB |
显示代码纯文本
#include <bits/stdc++.h>
#define pb emplace_back
#define fir first
#define sec second
using i64 = long long;
using pii = std::pair<int, int>;
constexpr int maxn = 3e2 + 5;
constexpr int mod = 1e9 + 7;
void add(int& x, int y) { if ((x += y) >= mod) x -= mod; return; }
void sub(int& x, int y) { if ((x -= y) < 0) x += mod; return; }
int n, m, f[maxn][maxn][maxn];
int main() {
freopen("rotk.in", "r", stdin);
freopen("rotk.out", "w", stdout);
std::cin.tie(nullptr)->sync_with_stdio(false);
std::cin >> n >> m;
f[0][1][0] = 1;
for (int i = 0; i < m; ++i) {
for (int j = 1; j <= n; ++j) {
for (int k = 0; k <= n; ++k) {
if (!f[i][j][k]) continue;
add(f[i + 1][j + k][0], 1ll * f[i][j][k] * j % mod);
add(f[i + 1][j][k + 1], 1ll * f[i][j][k] * (n - j - k) % mod);
add(f[i + 1][j][k], 1ll * f[i][j][k] * k % mod);
}
}
}
std::cout << f[m][n][0] << '\n';
return 0;
}