码迷,mamicode.com
首页 > 其他好文 > 详细

bzoj 1037: [ZJOI2008]生日聚会Party

时间:2018-12-29 23:12:40      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:amp   name   inline   统计   turn   cep   party   int   ted   

DP真强 什么都能做

 

/**************************************************************
    Problem: 1037
    User: lxy8584099
    Language: C++
    Result: Accepted
    Time:200 ms
    Memory:59476 kb
****************************************************************/
 
/*
    f[i][j][x][y]
    i个男生 j个女生 所有后缀中 男-女最大为x 女减男最大为y 
    Dp还真是啥都能做 
    遇到数据小的尽量往DP上面去想 
*/
#include<cstdio>
using namespace std;
const int N=155;
const int MOD=12345678;
int n,m,k;
int f[N][N][25][25];
inline int max(int a,int b)
{
    return a>b?a:b;
}
void Solve()
{
    scanf("%d%d%d",&n,&m,&k);
    f[0][0][0][0]=1;
    for(int i=0;i<=n;i++)
    for(int j=0;j<=m;j++)
    for(int x=0;x<=k;x++)
    for(int y=0;y<=k;y++) if(f[i][j][x][y])
    {
        if(i+1<=n) (f[i+1][j][x+1][max(y-1,0)]+=f[i][j][x][y])%=MOD;
        if(j+1<=m) (f[i][j+1][max(x-1,0)][y+1]+=f[i][j][x][y])%=MOD;
        // x+1 y+1超过了k也不所谓 因为我们只统计不大于k的部分 
    }
    int ans=0;
    for(int x=0;x<=k;x++)
    for(int y=0;y<=k;y++) (ans+=f[n][m][x][y])%=MOD;
    printf("%d\n",ans);
}
int main()
{
    Solve();
    return 0;
}

 

bzoj 1037: [ZJOI2008]生日聚会Party

标签:amp   name   inline   统计   turn   cep   party   int   ted   

原文地址:https://www.cnblogs.com/lxy8584099/p/10197897.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!