zoukankan      html  css  js  c++  java
  • bzoj 1801: [Ahoi2009]chess 中国象棋

    Description

    在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮。 请问有多少种放置方法,中国像棋中炮的行走方式大家应该很清楚吧.

    Input

    一行包含两个整数N,M,中间用空格分开.

    Output

    输出所有的方案数,由于值比较大,输出其mod 9999973

    Sample Input

    1 3

    Sample Output

    7

    HINT

    除了在3个格子中都放满炮的的情况外,其它的都可以.

    100%的数据中N,M不超过100
    50%的数据中,N,M至少有一个数不超过8
    30%的数据中,N,M均不超过6

    Source

    Day2

    通过象棋的规则,每行每列最多两个炮。。

    那么每行最多放两个,并且不能放在已经有两个炮的列上。。

    那么设dp[i][j][k]表示到了第i行,有j列没有放,有k列只放了一个炮的方案数。。。

    那么对于每一行,可以用组合数大力讨论这[0,2]个炮怎么放,总共6种情况,然后加法原理加起来。。。

    暴力得不行。。。

    // MADE BY QT666
    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    #include<iostream>
    #include<cstring>
    using namespace std;
    typedef long long ll;
    const int N=100050;
    const int Mod=9999973;
    ll jc[N],inv[N],dp[105][105][105],n,m;
    ll qpow(ll a,ll b){ll ans=1;while(b){if (b&1) (ans*=a)%=Mod;(a*=a)%=Mod,b>>=1;}return ans;}
    ll C(int n,int m){
      return jc[n]*inv[m]%Mod*inv[n-m]%Mod;
    }
    int main(){
      scanf("%d%d",&n,&m);
      jc[0]=1;for(int i=1;i<=m;i++) (jc[i]=jc[i-1]*i)%=Mod;
      for(int i=0;i<=m;i++) inv[i]=qpow(jc[i],Mod-2);
      dp[0][m][0]=1;
      for(int i=1;i<=n;i++){
        for(int j=0;j<=m;j++){
          for(int k=0;k<=m;k++){
        (dp[i][j][k]+=dp[i-1][j][k])%=Mod;
        if(k-1>=0) (dp[i][j][k]+=C(j+1,1)*dp[i-1][j+1][k-1])%=Mod;
        if(k-2>=0) (dp[i][j][k]+=C(j+2,2)*dp[i-1][j+2][k-2])%=Mod;
        (dp[i][j][k]+=C(k+1,1)*dp[i-1][j][k+1])%=Mod;
        (dp[i][j][k]+=C(k+2,2)*dp[i-1][j][k+2])%=Mod;
        (dp[i][j][k]+=C(j+1,1)*C(k,1)%Mod*dp[i-1][j+1][k])%=Mod;
          }
        }
      }
      ll ans=0;
      for(int i=0;i<=m;i++)
        for(int j=0;j<=m;j++)(ans+=dp[n][i][j])%=Mod;
      printf("%lld
    ",ans);
      return 0;
    }
    

      

  • 相关阅读:
    centos
    ssh 登录 centos 服务器
    Sql NoSql
    Java
    PHP
    React Hooks使用
    前端优化tips
    Error:Node Sass version 5.0.0 is incompatible with ^4.x 解决
    css换行
    git 关联多个远程仓库
  • 原文地址:https://www.cnblogs.com/qt666/p/7360568.html
Copyright © 2011-2022 走看看