CF1657E Star MST
Problem
有一个
Input
一行两个整数
Output
一行一个整数表示答案。
Sample
Input 1
3 2
Output 1
5
Input 2
4 4
Output 2
571
Input 3
6 9
Output 3
310640163
Input 4
42 13
Output 4
136246935
Solution
比较难想的DP题。
考虑定义
由题意可以得到,对于一条边
假设我们已知为
其中
加入的这
最后
代码:
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int kmax = 255;
const int Mod = 998244353;
int n, m;
long long c[kmax][kmax];
long long f[kmax][kmax];
long long Pow(long long x, long long y) {
long long r = 1;
for (; y; y >>= 1) {
if (y & 1) r = r * x % Mod;
x = x * x % Mod;
}
return r;
}
void Init() { // 预处理组合数
c[0][0] = 1;
for (int i = 1; i < kmax; i++) {
c[i][0] = 1;
for (int j = 1; j <= i; j++) {
c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % Mod;
}
}
}
int main() {
Init();
cin >> n >> m;
f[0][0] = 1;
for (int i = 1; i <= m; i++) {
for (int j = 0; j < n; j++) {
for (int k = 0; k < n - j; k++) {
f[i][j + k] = (f[i][j + k] + f[i - 1][j] * c[n - j - 1][k] % Mod * Pow(m - i + 1, j * k + k * (k - 1) / 2) % Mod) % Mod; // 直接转移,记得取模
}
}
}
cout << f[m][n - 1];
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】