BZOJ 1037 生日聚会

能不能仔细一点啊。。。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define mod 12345678
using namespace std;
int n,m,p,dp[155][155][21][21];
int main()
{
    scanf("%d%d%d",&n,&m,&p);
    dp[0][0][0][0]=1;
    for (int i=0;i<=n;i++)
        for (int j=0;j<=m;j++)
            for (int k=0;k<=min(i,p);k++)
                for (int l=0;l<=min(j,p);l++)
                {
                    int ret=dp[i][j][k][l];
                    if (i<n && k<p) dp[i+1][j][k+1][max(0,l-1)]=(dp[i+1][j][k+1][max(0,l-1)]+dp[i][j][k][l])%mod;
                    if (j<m && l<p) dp[i][j+1][max(0,k-1)][l+1]=(dp[i][j+1][max(0,k-1)][l+1]+dp[i][j][k][l])%mod;
                }
    int ans=0;
    for (int i=0;i<=p;i++)
        for (int j=0;j<=p;j++)
            ans=(ans+dp[n][m][i][j])%mod;
    printf("%d
",ans);
    return 0;
}
原文地址:https://www.cnblogs.com/ziliuziliu/p/6027910.html