标签:== main return str c++ mat std continue 初始
1 -> {}
2 -> []
3 -> ()
\(f[d][a][b][c]\)
表示 \([i * 2 - 1, j * 2]\) 这段区间 深度为 d
\(1\) 有 \(a\) 个, \(2\) 有 \(b\) , \(3\) 有 \(c\) 个
初始状态
\(f[1][0][0][1] = 1;\)
\(f[1][0][1][0] = 1;\)
\(f[1][1][0][0] = 1;\)
操作1:用 () 括起来
需满足: \(a = 0\) 且 \(b = 0\)
\(f[d][a][b][c] += f[d - 1][a][b][c - 1]\)
操作2:用 [] 括起来
需满足:\(a = 0\)
\(f[d][a][b][c] += f[d - 1][a][b - 1][c]\)
操作3:用 {} 括起来
\(f[d][a][b][c] += f[d - 1][a - 1][b][c]\)
合并 (枚举第一个括号)
#include
#include
using namespace std;
const int S = 35, L = 11, P = 11380;
int L1, L2, L3, D, f[S][L][L][L], s[S][L][L][L];
int main() {
scanf("%d%d%d%d", &L1, &L2, &L3, &D);
s[0][0][0][0] = f[0][0][0][0] = 1;
for (int d = 1; d = 2) (f[d][a][b][c] += s[d - 2][a1 - 1][b1][c1] * f[d][a - a1][b - b1][c - c1]) %= P;
(f[d][a][b][c] += f[d - 1][a1 - 1][b1][c1] * s[d][a - a1][b - b1][c - c1]) %= P;
} else if (b1) {
if (d >= 2) (f[d][a][b][c] += s[d - 2][a1][b1 - 1][c1] * f[d][a - a1][b - b1][c - c1]) %= P;
(f[d][a][b][c] += f[d - 1][a1][b1 - 1][c1] * s[d][a - a1][b - b1][c - c1]) %= P;
} else {
if (d >= 2) (f[d][a][b][c] += s[d - 2][a1][b1][c1 - 1] * f[d][a - a1][b - b1][c - c1]) %= P;
(f[d][a][b][c] += f[d - 1][a1][b1][c1 - 1] * s[d][a - a1][b - b1][c - c1]) %= P;
}
}
}
}
s[d][a][b][c] = (s[d - 1][a][b][c] + f[d][a][b][c]) % P;
}
}
}
}
printf("%d\n", f[D][L1][L2][L3]);
return 0;
}
AcWing 317. 陨石的秘密
标签:== main return str c++ mat std continue 初始
原文地址:https://www.cnblogs.com/dmoransky/p/12380388.html