zoukankan      html  css  js  c++  java
  • bzoj1037[ZJOI2008]生日聚会

    bzoj1037[ZJOI2008]生日聚会

    题意:

    一排小孩坐着玩游戏。就座的方案满足如下条件:对于任意连续的一段,男孩与女孩的数目之差不超过k。给出男孩数,女孩数和k,求就座方案数除以12345678的余数。

    题解:

    dp方程见程序,i1i2表示当前选了几男几女,i3i4分别表示当前男比女多几个和女比男多几个。

    代码:

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 #define inc(i,j,k) for(int i=j;i<=k;i++)
     5 #define mod 12345678
     6 using namespace std;
     7 
     8 int f[160][160][30][30];
     9 int main(){
    10     int n,m,k; scanf("%d%d%d",&n,&m,&k);
    11     f[0][0][0][0]=1;
    12     inc(i1,0,n)inc(i2,0,m)inc(i3,0,k)inc(i4,0,k){
    13         if(i1!=n&&i3!=k)f[i1+1][i2][i3+1][max(i4-1,0)]=(f[i1+1][i2][i3+1][max(i4-1,0)]+f[i1][i2][i3][i4])%mod;
    14         if(i2!=m&&i4!=k)f[i1][i2+1][max(i3-1,0)][i4+1]=(f[i1][i2+1][max(i3-1,0)][i4+1]+f[i1][i2][i3][i4])%mod;
    15     }
    16     int ans=0;
    17     inc(i1,0,k)inc(i2,0,k)ans=(ans+f[n][m][i1][i2])%mod;
    18     printf("%d",ans);
    19 }

    20160322

  • 相关阅读:
    CPU运行原理
    ucore代码分析
    ThreadLocal是否会导致内存泄露
    2018 多校联合训练 4
    2018 多校联合训练 3
    2018 牛客多校 4
    2018 牛客多校 3
    2018 牛客多校 2
    2018 牛客多校 1
    2018 多校联合训练 2
  • 原文地址:https://www.cnblogs.com/YuanZiming/p/5656797.html
Copyright © 2011-2022 走看看