zoukankan      html  css  js  c++  java
  • BZOJ1037: [ZJOI2008]生日聚会Party

    DP…

     1 /**************************************************************
     2     Problem: 1037
     3     User: zhuohan123
     4     Language: C++
     5     Result: Accepted
     6     Time:448 ms
     7     Memory:1792 kb
     8 ****************************************************************/
     9  
    10 #include <iostream>
    11 #include <cstdio>
    12 #include <cstring>
    13 using namespace std;
    14 inline int imax(int a,int b){return a>b?a:b;}
    15 inline int imin(int a,int b){return a<b?a:b;}
    16 const int mo=12345678;
    17 inline int add(int &a,int b){a=(a+b)%mo;}
    18 int f[2][151][21][21];
    19 //f[总人数][男生数][男-女][女-男] P.S.最后两维若是负数则当为0 
    20 int main(int argc, char *argv[])
    21 {
    22     int n,m,k;cin>>n>>m>>k;
    23     f[0][0][0][0]=1;
    24     for(int i=0;i<n+m;i++)
    25     {
    26         memset(f[(i+1)&1],0,sizeof f[(i+1)&1]);
    27         for(int j=0;j<=imin(i,n);j++)
    28             for(int bmg=0;bmg<=imin(j,k);bmg++)
    29                 for(int gmb=0;gmb<=imin(i-j,k);gmb++)
    30                 {
    31                     if(bmg<k&&j<n)add(f[(i+1)&1][j+1][bmg+1][imax(gmb-1,0)],f[i&1][j][bmg][gmb]);
    32                     if(gmb<k&&(i-j)<m)add(f[(i+1)&1][j][imax(bmg-1,0)][gmb+1],f[i&1][j][bmg][gmb]);
    33                 }
    34     }   
    35     int ans=0;
    36     for(int i=0;i<=k;i++)
    37         for(int j=0;j<=k;j++)
    38         add(ans,f[(n+m)&1][n][i][j]);
    39     cout<<ans<<endl;
    40     return 0;
    41 }
  • 相关阅读:
    解析XML技术
    XML名命空间
    XML解析器
    java列表组件鼠标双击事件的实现
    XML(可拓展标记语言)基本概念
    数据包式套接字:基于UDP协议的Socket网络编程
    流式套接字:基于TCP协议的Socket网络编程(案例3)
    剑指 Offer 58
    剑指 Offer 58
    剑指 Offer 57
  • 原文地址:https://www.cnblogs.com/zhuohan123/p/3263020.html
Copyright © 2011-2022 走看看