zoukankan      html  css  js  c++  java
  • [BZOJ] 4806 炮

    Time Limit: 10 Sec  Memory Limit: 128 MB
    Submit: 793  Solved: 392
    [Submit][Status][Discuss]
    Description
    众所周知,双炮叠叠将是中国象棋中很厉害的一招必杀技。炮吃子时必须隔一个棋子跳吃,即俗称"炮打隔子"。 
    炮跟炮显然不能在一起打起来,于是rly一天借来了许多许多的炮在棋盘上摆了起来……他想知道,在N×M的矩形
    方格中摆若干炮(可以不摆)使其互不吃到的情况下方案数有几种。
    棋子都是相同的。
    Input
    一行,两个正整数N和M。
    N<=100,M<=100
    Output
    一行,输出方案数mod 999983Sample Input
    1 3
    Sample Output
    7
    HINT
    Source
    By FancyCoder
    
    [Submit][Status][Discuss]

    大分类讨论,细心。

    #include<iostream>
    #include<cstdio>
    #define rsh now%=MOD
    #define int long long
    using namespace std;
    
    const int MAXN=105;
    const int MOD=999983;
    int f[2][MAXN][MAXN];
    int n,m;
    
    int calc(int x){
        return (x*(x-1)/2)%MOD;
    }
    
    signed main(){
        cin>>n>>m;
        f[0][0][0]=1;
        for(int i=1;i<=n;i++){
            for(int j=0;j<=m;j++){//1
                for(int k=0;k+j<=m;k++){//2
                    int &now=f[i&1][j][k];
                    now=f[(i-1)&1][j][k];
                    if(k>=1) now+=f[(i-1)&1][j+1][k-1]*(j+1);
                    if(k>=2) now+=f[(i-1)&1][j+2][k-2]*calc(j+2);
                    if(j>=1) now+=f[(i-1)&1][j-1][k]*(m-j-k+1);
                    if(j>=2) now+=f[(i-1)&1][j-2][k]*calc(m-j-k+2);
                    if(k>=1) now+=f[(i-1)&1][j][k-1]*(m-j-k+1)*j;
                    rsh;
                }
            }
        }
        int ans=0;
        for(int i=0;i<=m;i++){
            for(int j=0;i+j<=m;j++){
                ans+=f[n&1][i][j];
    
            }ans%=MOD;
        }
        cout<<ans<<endl;
        return 0;
    }

    本文来自博客园,作者:GhostCai,转载请注明原文链接:https://www.cnblogs.com/ghostcai/p/9247391.html

  • 相关阅读:
    Jqurey 得到url参数 getUrlParam
    JQUERY获取当前页面的URL信息
    TextView,imageView属性讲解
    滑动解锁
    显示界面跳转,隐式跳转
    代码进行Relativelayout,constraintLayout布局
    代码布局-LinearLayout
    实例xml拖拽详细方法布局
    layout布局
    AS资源了解
  • 原文地址:https://www.cnblogs.com/ghostcai/p/9247391.html
Copyright © 2011-2022 走看看