提出 #43027869
ソースコード 拡げる
// LUOGU_RID: 113480517
#include <bits/stdc++.h>
#define SZ(x) (int) x.size() - 1
#define all(x) x.begin(), x.end()
#define ms(x, y) memset(x, y, sizeof x)
#define F(i, x, y) for (int i = (x); i <= (y); i++)
#define DF(i, x, y) for (int i = (x); i >= (y); i--)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
template <typename T> void chkmax(T& x, T y) { x = max(x, y); }
template <typename T> void chkmin(T& x, T y) { x = min(x, y); }
template <typename T> void read(T &x) {
x = 0; int f = 1; char c = getchar();
for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;
for (; isdigit(c); c = getchar()) x = x * 10 + c - '0';
x *= f;
}
const int N = 510, MOD = 998244353;
int n, s[N], f[N][N][N], C[N][N];
void add(int &x, int y) {
if ((x += y) >= MOD) x -= MOD;
}
signed main() {
read(n);
F(i, 1, n) {
int x; read(x);
s[x]++;
}
F(i, 0, n) {
C[i][0] = 1;
F(j, 1, i) C[i][j] = (C[i - 1][j - 1] + C[i - 1][j]) % MOD;
}
DF(i, n, 1) s[i] += s[i + 1];
f[n + 1][0][0] = 1;
DF(i, n, 1)
F(j, 0, n / (i + 1))
F(k, j * (i + 1), n)
if (f[i + 1][j][k]) {
// cout << "! " << i + 1 << " " << j << " " << k << " " << f[i + 1][j][k] << endl;
int t = 1;
F(l, 0, min(s[i] - j, (s[i] - k) / i)) {
// if (i == 2 && j + l == 2) {
// cout << C[s[i] - j][l] << " " << s[i] << " " << k << " " << i * l << " " << C[s[i] - k][i * l] << endl;
// }
add(f[i][j + l][k + i * l], (ll) f[i + 1][j][k] * C[s[i] - j][l] % MOD * t % MOD);
t = (ll) t * C[s[i] - k - l * i][i] % MOD;
}
}
int ans = 0;
F(i, 1, n) add(ans, f[1][i][n]);
cout << ans;
return 0;
}
提出情報
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
700 / 700 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 00_sample_04.txt |
| All |
00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 00_sample_04.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| 00_sample_01.txt |
AC |
5 ms |
3560 KiB |
| 00_sample_02.txt |
AC |
2 ms |
3488 KiB |
| 00_sample_03.txt |
AC |
2 ms |
3612 KiB |
| 00_sample_04.txt |
AC |
2 ms |
3664 KiB |
| 01_test_01.txt |
AC |
2 ms |
3608 KiB |
| 01_test_02.txt |
AC |
3 ms |
3452 KiB |
| 01_test_03.txt |
AC |
3 ms |
3600 KiB |
| 01_test_04.txt |
AC |
109 ms |
12060 KiB |
| 01_test_05.txt |
AC |
91 ms |
11292 KiB |
| 01_test_06.txt |
AC |
106 ms |
11740 KiB |
| 01_test_07.txt |
AC |
117 ms |
12080 KiB |
| 01_test_08.txt |
AC |
117 ms |
12016 KiB |
| 01_test_09.txt |
AC |
117 ms |
12284 KiB |
| 01_test_10.txt |
AC |
10 ms |
7444 KiB |
| 01_test_11.txt |
AC |
125 ms |
13812 KiB |
| 01_test_12.txt |
AC |
14 ms |
8092 KiB |
| 01_test_13.txt |
AC |
124 ms |
13816 KiB |
| 01_test_14.txt |
AC |
99 ms |
10136 KiB |
| 01_test_15.txt |
AC |
116 ms |
12324 KiB |
| 01_test_16.txt |
AC |
118 ms |
12204 KiB |
| 01_test_17.txt |
AC |
122 ms |
12276 KiB |
| 01_test_18.txt |
AC |
117 ms |
12388 KiB |