提出 #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;
}

提出情報

提出日時
問題 E - Strange Constraints
ユーザ ast123
言語 C++ (GCC 9.2.1)
得点 700
コード長 1639 Byte
結果 AC
実行時間 125 ms
メモリ 13816 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 700 / 700
結果
AC × 4
AC × 22
セット名 テストケース
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