zoukankan      html  css  js  c++  java
  • CodeForces

      这个题叫问给一个2*N的方块,你可以在每一个上填任意黑或者白两种,假设颜色相同的并且有公共边的就被认为是一块,问组成K块有多少种方案。

      这题开始感觉无从下手,像组合数学又不像的,其实这个题的关键在于,2*N 的方块,那么我每两个就只会有四种情况,我们可以通过求最后两位去递推得到更多位数的,因此问题有办法解决了 。

    DP[i][j][[k] ,i代表我目前到了第i位置,有j个块,最后一位i是k的情况(我假设 00是0 ,01是1,10是2,11是3)。

    PS:DP转移方程太长了,你自己看代码。。。。(其实应该是有更简单的方法的,我的DP写的太丑了)

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    long long dp[1003][2003][4];
    const int mod=998244353;
    int main(){
       int n,k;
       while(~scanf("%d%d",&n,&k)){
          memset(dp,0,sizeof(dp));
          dp[1][1][0]=1;
          dp[1][2][1]=1;
          dp[1][2][2]=1;
          dp[1][1][3]=1;
          for (int i=1;i<=n;i++){
             for (int j=1;j<=2*n;j++){
                dp[i+1][j][0]=(dp[i+1][j][0]+dp[i][j][0]+dp[i][j][1]+dp[i][j][2])%mod;
                dp[i+1][j+1][0]=(dp[i+1][j+1][0]+dp[i][j][3])%mod;
    
                dp[i+1][j][1]=(dp[i+1][j][1]+dp[i][j][1])%mod;
                dp[i+1][j+1][1]=(dp[i+1][j+1][1]+dp[i][j][0]+dp[i][j][3])%mod;
                dp[i+1][j+2][1]=(dp[i+1][j+2][1]+dp[i][j][2])%mod;
    
                dp[i+1][j][2]=(dp[i+1][j][2]+dp[i][j][2])%mod;
                dp[i+1][j+1][2]=(dp[i+1][j+1][2]+dp[i][j][0]+dp[i][j][3])%mod;
                dp[i+1][j+2][2]=(dp[i+1][j+2][2]+dp[i][j][1])%mod;
    
                dp[i+1][j][3]=(dp[i+1][j][3]+dp[i][j][3]+dp[i][j][1]+dp[i][j][2])%mod;
                dp[i+1][j+1][3]=(dp[i+1][j+1][3]+dp[i][j][0])%mod;
             }
          }
    
    //      for (int i=1;i<=n;i++){
    //         for (int j=1;j<=2*n;j++){
    //            printf("%d %d %d %d----",dp[i][j][0],dp[i][j][1],dp[i][j][2],dp[i][j][3]);
    //         }
    //         printf("
    ");
    //      }
          printf("%lld
    ",(dp[n][k][0]+dp[n][k][1]+dp[n][k][2]+dp[n][k][3])%mod);
    
       }
       return 0;
    }
    有不懂欢迎咨询 QQ:1326487164(添加时记得备注)
  • 相关阅读:
    【转载】ESFramewor使用技巧(2)-- 在插件中使用NHibernate
    【转载】ESFramework介绍之(20)―― 插件自动升级
    [转载]我的架构经验小结(一)-- 常用的架构模型
    [转载]TCP服务器“拒绝服务攻击” 解决方案
    【转载】我的架构经验小结(三)-- 深入三层架构
    【转载】动态加载dll
    CSS3动画之一:Transitions功能
    CSS3中的transform变形
    [转载]插件开发
    【转载】服务器系统自动升级
  • 原文地址:https://www.cnblogs.com/bluefly-hrbust/p/9745960.html
Copyright © 2011-2022 走看看