提出 #28671151


ソースコード 拡げる

#include<bits/stdc++.h>
#define L(i, j, k) for(int i = (j); i <= (k); ++i)
#define R(i, j, k) for(int i = (j); i >= (k); --i)
#define ll long long
#define vi vector <int>
#define sz(a) ((int) (a).size())
#define me(f, x) memset(f, x, sizeof(f))
using namespace std;
const int N = 55, mod = 1e9 + 7;
int n, dp[N][N][N], ns; // used; cur1; cur2; 
int qpow(int x, int y = mod - 2) {
	int res = 1;
	for(; y; x = (ll) x * x % mod, y >>= 1) if(y & 1) res = (ll) res * x % mod;
	return res;
}
int fac[N], ifac[N], inv[N];
void init(int x) {
	fac[0] = ifac[0] = inv[1] = 1;
	L(i, 2, x) inv[i] = (ll) (mod - mod / i) * inv[mod % i] % mod;
	L(i, 1, x) fac[i] = (ll) fac[i - 1] * i % mod, ifac[i] = (ll) ifac[i - 1] * inv[i] % mod;
} 
int C(int x, int y) {
	return x < y || y < 0 ? 0 : (ll) fac[x] * ifac[y] % mod * ifac[x - y] % mod;
}
int main () {
	ios :: sync_with_stdio(false);
	cin.tie (0); cout.tie (0);
	cin >> n;
	init (n);
	dp[0][0][0] = 1;
	L(i, 0, n) {
		L(x, 0, n) {
			L(y, 0, n) if(dp[i][x][y]) {
				int up = n - i, dt = abs (x - y);
				if (x >= y) {
					L(u, 0, up) L(v, dt, up) if(u + v && u + v <= up) 
						(dp[i + u + v][u + dt][v - dt] += 
							(ll) dp[i][x][y] * ifac[u] % mod * ifac[v] % mod) %= mod;
				} else {
					L(u, dt, up) L(v, 0, up) if(u + v && u + v <= up) 
						(dp[i + u + v][u - dt][v + dt] += 
							(ll) dp[i][x][y] * ifac[u] % mod * ifac[v] % mod) %= mod;
				}
			}
		}
	}
	cout << (ll) dp[n][1][0] * fac[n] % mod << '\n';
	return 0;
}

提出情報

提出日時
問題 F - Checkers
ユーザ zhoukangyang
言語 C++ (GCC 9.2.1)
得点 1600
コード長 1522 Byte
結果 AC
実行時間 24 ms
メモリ 4104 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 1600 / 1600
結果
AC × 3
AC × 50
セット名 テストケース
Sample s1.txt, s2.txt, s3.txt
All 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, 37.txt, 38.txt, 39.txt, 40.txt, 41.txt, 42.txt, 43.txt, 44.txt, 45.txt, 46.txt, 47.txt, s1.txt, s2.txt, s3.txt
ケース名 結果 実行時間 メモリ
01.txt AC 9 ms 3480 KiB
02.txt AC 2 ms 3620 KiB
03.txt AC 2 ms 3548 KiB
04.txt AC 2 ms 3632 KiB
05.txt AC 2 ms 3620 KiB
06.txt AC 3 ms 3572 KiB
07.txt AC 2 ms 3664 KiB
08.txt AC 2 ms 3672 KiB
09.txt AC 4 ms 3544 KiB
10.txt AC 2 ms 3712 KiB
11.txt AC 2 ms 3624 KiB
12.txt AC 3 ms 3620 KiB
13.txt AC 2 ms 3684 KiB
14.txt AC 2 ms 3640 KiB
15.txt AC 2 ms 3724 KiB
16.txt AC 2 ms 3644 KiB
17.txt AC 2 ms 3656 KiB
18.txt AC 3 ms 3744 KiB
19.txt AC 2 ms 3676 KiB
20.txt AC 2 ms 3688 KiB
21.txt AC 3 ms 3820 KiB
22.txt AC 3 ms 3708 KiB
23.txt AC 4 ms 3800 KiB
24.txt AC 4 ms 3780 KiB
25.txt AC 4 ms 3720 KiB
26.txt AC 5 ms 3744 KiB
27.txt AC 6 ms 3696 KiB
28.txt AC 6 ms 3840 KiB
29.txt AC 6 ms 3852 KiB
30.txt AC 10 ms 3904 KiB
31.txt AC 7 ms 3744 KiB
32.txt AC 10 ms 3888 KiB
33.txt AC 7 ms 3832 KiB
34.txt AC 8 ms 3844 KiB
35.txt AC 8 ms 3932 KiB
36.txt AC 11 ms 3856 KiB
37.txt AC 16 ms 3956 KiB
38.txt AC 16 ms 3960 KiB
39.txt AC 12 ms 3956 KiB
40.txt AC 15 ms 3900 KiB
41.txt AC 18 ms 3916 KiB
42.txt AC 14 ms 3992 KiB
43.txt AC 24 ms 3948 KiB
44.txt AC 15 ms 4080 KiB
45.txt AC 16 ms 3972 KiB
46.txt AC 20 ms 4104 KiB
47.txt AC 23 ms 4080 KiB
s1.txt AC 2 ms 3664 KiB
s2.txt AC 2 ms 3564 KiB
s3.txt AC 2 ms 3680 KiB