提出 #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 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| 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 |