1 条题解
-
1
#include <bits/stdc++.h> #define MOD 11380 using namespace std; int L1, L2, L3, D; int f[15][15][15][35]; int main() { scanf("%d%d%d%d", &L1, &L2, &L3, &D); for (int i = 0; i <= D; i++) f[0][0][0][i] = 1; for (int l1 = 0; l1 <= L1; l1++) for (int l2 = 0; l2 <= L2; l2++) for (int l3 = 0; l3 <= L3; l3++) for (int d = 1; d <= D; d++) { if (l1) f[l1][l2][l3][d] = (f[l1][l2][l3][d] + f[l1 - 1][l2][l3][d - 1]) % MOD; if (!l1 && l2) f[l1][l2][l3][d] = (f[l1][l2][l3][d] + f[l1][l2 - 1][l3][d - 1]) % MOD; if (!l1 && !l2 && l3) f[l1][l2][l3][d] = (f[l1][l2][l3][d] + f[l1][l2][l3 - 1][d - 1]) % MOD; for (int i = 1; i <= l1; i++) for (int j = 0; j <= l2; j++) for (int k = 0; k <= l3; k++) { int tmp = f[l1 - i][l2 - j][l3 - k][d]; if (i == l1 && j == l2 && k == l3) tmp = (tmp - 1 + MOD) % MOD; f[l1][l2][l3][d] = (f[l1][l2][l3][d] + f[i - 1][j][k][d - 1] * tmp) % MOD; } for (int j = 1; j <= l2; j++) for (int k = 0; k <= l3; k++) { int tmp = f[l1][l2 - j][l3 - k][d]; if (l1 == 0 && j == l2 && k == l3) tmp = (tmp - 1 + MOD) % MOD; f[l1][l2][l3][d] = (f[l1][l2][l3][d] + f[0][j - 1][k][d - 1] * tmp) % MOD; } for (int k = 1; k <= l3; k++) { int tmp = f[l1][l2][l3 - k][d]; if (l1 == 0 && l2 == 0 && k == l3) tmp = (tmp - 1 + MOD) % MOD; f[l1][l2][l3][d] = (f[l1][l2][l3][d] + f[0][0][k - 1][d - 1] * tmp) % MOD; } } if (!D) printf("%d\n", f[L1][L2][L3][D]); else printf("%d\n", (f[L1][L2][L3][D] - f[L1][L2][L3][D - 1] + MOD) % MOD); return 0; }
- 1
信息
- ID
- 4617
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- 5
- 标签
- 递交数
- 2
- 已通过
- 2
- 上传者