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

BZOJ 1037 生日聚会Party(DP)

时间:2014-06-23 07:15:15      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   http   art      

题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1037

题意:给定n个0m个1。有多少种排列方式使得任意一段中01的个数差小于等于K?

思路:f[i][j][k][t]表示i个0、j个1、0比1最多多k个、1比0最多多t的方案数。

 

int n,m,K,f[N][N][21][21];

void up(int &x,int y)
{
    x+=y;
    if(x>=mod) x-=mod;
}


int main()
{
    RD(n,m,K);
    int i,j,k,t;
    f[0][0][0][0]=1;
    FOR0(i,n+1) FOR0(j,m+1) FOR0(k,K+1) FOR0(t,K+1) if(f[i][j][k][t])
    {
        if(i<n&&k<K) up(f[i+1][j][k+1][max(t-1,0)],f[i][j][k][t]);
        if(j<m&&t<K) up(f[i][j+1][max(k-1,0)][t+1],f[i][j][k][t]);
    }
    int ans=0;
    FOR0(i,K+1) FOR0(j,K+1) up(ans,f[n][m][i][j]);
    PR(ans);
    return 0;
}

 

 

 

BZOJ 1037 生日聚会Party(DP),布布扣,bubuko.com

BZOJ 1037 生日聚会Party(DP)

标签:style   class   blog   http   art      

原文地址:http://www.cnblogs.com/jianglangcaijin/p/3799535.html

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