记录编号 589247 评测结果 AAAAAAAAAA
题目名称 勇者 最终得分 100
用户昵称 Gravataryrtiop 是否通过 通过
代码语言 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;
}