P2051 [AHOI2009] 중국 장기
지식 포인트: DP
원제면
제목의 뜻을 약술하다.
\(N\times M\) 바둑판을 지정합니다.줄마다, 바둑알 수\(<3\) 의 방안 수를 구합니다.\(1\le N,M\le 100\).
문제의 뜻을 분석하다.
올바른 줄은 최대\(2\)개의 바둑알만 있고 바둑알 수\(<2\)의 열에만 놓을 수 있습니다.각 행이\(i\)행으로 열거될 때 바둑알의 수가 같은 두 열은 등가이며 바둑알의 위치는 영향을 주지 않는다.각 바둑알의 수를 매거하는 열수와 이\(2\)개의 바둑알의 위치를 고려하여 이동합니다.
설정\(f {i, j, k}\)는 앞\(i\)줄에\(j\)열에\(1\)개의 바둑알이 있고\(k\)열에 두 개의 바둑알이 있는 합법적인 방안 수를 나타낸다.분명히\(m-j-k\) 열이 있고 바둑알이 없습니다.
바둑돌의 수를 고려하다.
4
4
4
4
4
4
4
4
공헌구화, 즉\(f {i, j, k}\)의 값입니다.
코드 구현
// :DP
/*
By:Luckyblock
*/
#include
#include
#include
#define ll long long
const int kMaxn = 110;
const ll kMod = 9999973;
//=============================================================
ll n, m, ans, f[kMaxn][kMaxn][kMaxn];
//=============================================================
inline int read() {
int f = 1, w = 0; char ch = getchar();
for (; !isdigit(ch); ch = getchar()) if (ch == '-') f = -1;
for (; isdigit(ch); ch = getchar()) w = (w << 3) + (w << 1) + (ch ^ '0');
return f * w;
}
ll C(ll x, ll y) {
return ((x - 1) * x / 2) % kMod;
}
//=============================================================
int main() {
n = read(), m = read();
f[0][0][0] = 1;
for (int i = 1; i <= n; ++ i) {
for (int j = 0; j <= m; ++ j) {
for (int k = 0; j + k <= m; ++ k) {
f[i][j][k] = f[i - 1][j][k];
if (k >= 1) f[i][j][k] = (f[i][j][k] + f[i - 1][j + 1][k - 1] * (j + 1)) % kMod;
if (j >= 1) f[i][j][k] = (f[i][j][k] + f[i - 1][j - 1][k] * (m - j + 1 - k)) % kMod;
if (k >= 2) f[i][j][k] = (f[i][j][k] + f[i - 1][j + 2][k - 2] * C(j + 2, 2)) % kMod;
if (j >= 2) f[i][j][k] = (f[i][j][k] + f[i - 1][j - 2][k] * C(m - j + 2 - k, 2)) % kMod;
if (j >= 1 && k >= 1) f[i][j][k] = (f[i][j][k] + f[i - 1][j][k - 1] * j * (m - j - k + 1)) % kMod;
}
}
}
for (int j = 0; j <= m; ++ j) {
for (int k = 0; j + k <= m; ++ k) {
ans += f[n][j][k];
ans %= kMod;
}
}
printf("%lld", ans);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.