zoukankan      html  css  js  c++  java
  • bzoj1037题解

    【解题思路】

      DP。f[i][j][x][y]表示已选了i个♂和j个♀,其中♂比♀多x,♀比♂多y(x,y≥0)。

      递推式转移方程:

    (f[i+1][j][x+1][max(y-1,0)]+=f[i][j][x][y]);
    (f[i][j+1][max(x-1,0)][y+1]+=f[i][j][x][y]);
      复杂度O(nmk2)。
    【参考代码】
     1 #include <algorithm>
     2 #include <cstdio>
     3 #define REP(i,low,high) for(register int i=(low);i<=(high);++i)
     4 #define AwD 12345678
     5 using namespace std;
     6 static int n,m,k; int f[155][155][25][25]={0};
     7 int main()
     8 {
     9     scanf("%d%d%d",&n,&m,&k),f[0][0][0][0]=1;
    10     REP(i,0,n) REP(j,0,m) REP(i1,0,k) REP(j1,0,k)
    11     {
    12         if(i<n) (f[i+1][j][i1+1][max(j1-1,0)]+=f[i][j][i1][j1])%=AwD;
    13         if(j<m) (f[i][j+1][max(i1-1,0)][j1+1]+=f[i][j][i1][j1])%=AwD;
    14     }
    15     int ans=0; REP(i,0,k) REP(j,0,k) (ans+=f[n][m][i][j])%=AwD;
    16     return printf("%d
    ",ans),0;
    17 }
    View Code
  • 相关阅读:
    Codeforces Round #534 (Div. 2) D. Game with modulo 交互题
    传球游戏 dp
    欧拉通路和欧拉回路
    HDU 1116
    HDU 4970
    HDU 4557
    HDU 4864
    HDU 1565
    HDU 3046
    HDU 4240
  • 原文地址:https://www.cnblogs.com/spactim/p/6504947.html
Copyright © 2011-2022 走看看