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
  • 相关阅读:
    c++中sort()及qsort()的用法总结
    POJ的层次感分类
    DFS练习-HDU1010
    Dijkstra&&Floyd
    DFS练习一---HDU 1342
    快速幂取模算法
    树的实现
    C++的队列和pair
    BFS练习-POJ.2386
    Codeforces 1139E(二分图最大匹配)
  • 原文地址:https://www.cnblogs.com/spactim/p/6504947.html
Copyright © 2011-2022 走看看