蓝桥集训之小国王

蓝桥集训之小国王

  • 核心思想:状态压缩dp

    • 将每张图对应的上一张符合要求的图存入二维数组
    • 依次取出并更新当前值
  •   #include<iostream>
      #include<cstring>
      #include<algorithm>
      #include<vector>
      
      using namespace std;
      typedef long long LL;
      const int N = 15,M = 1<<10,K = 110;
      
      LL f[N][K][M];
      int n,m;
      int cnt[M];
      vector<int> states;
      vector<int> h[M];
      
      bool check(int state)  //判断当前图是否符合要求 左右不能同为1
      {
          for(int i=0;i<n;i++)
              if((state >> i & 1) && (state>>i+1 & 1))
                  return false;
          return true;
      }
      int count(int state)  //求有多少1
      {
          int res=0;
          for(int i=0;i<n;i++) res+= state>>i&1;
          return res;
      }
      int main()
      {
          cin>>n>>m;
          
          for(int i=0;i<1<<n;i++)  //求单行符合
              if(check(i))
              {
                  states.push_back(i);
                  cnt[i] = count(i);
              }
              
          for(int i=0;i<states.size();i++)  //求前一行符合
              for(int j=0;j<states.size();j++)
              {
                  int a = states[i] , b = states[j];
                  if((a&b) == 0 && check(a|b))
                      h[i].push_back(j);
              }
              
          f[0][0][0] = 1;
          for(int i=1;i<=n+1;i++)
              for(int j=0;j<=m;j++)
                  for(int a=0;a<states.size();a++)
                      for(auto b : h[a])  //a和j都从头遍历了一遍
                      {
                          int c = cnt[states[a]];
                          if(j>=c) f[i][j][a] += f[i-1][j-c][b];
                      }
          cout<<f[n+1][m][0];
      }
    

相关推荐

  1. 集训小国

    2024-03-29 04:14:01       20 阅读
  2. 算法提高小国

    2024-03-29 04:14:01       13 阅读
  3. 集训星空

    2024-03-29 04:14:01       19 阅读
  4. 集训日期差值

    2024-03-29 04:14:01       26 阅读
  5. 集训日期问题

    2024-03-29 04:14:01       22 阅读
  6. 集训奶牛选美

    2024-03-29 04:14:01       17 阅读
  7. 集训八数码

    2024-03-29 04:14:01       21 阅读
  8. 集训山峰和山谷

    2024-03-29 04:14:01       21 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-29 04:14:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-29 04:14:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-29 04:14:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-29 04:14:01       20 阅读

热门阅读

  1. 数据仓库——无事实的事实表

    2024-03-29 04:14:01       20 阅读
  2. 31-4 命令执行漏洞 - RCE原理

    2024-03-29 04:14:01       20 阅读
  3. Day29:学习SpringCloud

    2024-03-29 04:14:01       21 阅读
  4. 学会这10个Python脚本来完成你的日常任务

    2024-03-29 04:14:01       19 阅读
  5. 突然断电导致git损坏修复

    2024-03-29 04:14:01       19 阅读
  6. 算法日记————对顶堆(4道题)

    2024-03-29 04:14:01       18 阅读
  7. go env 命令详解

    2024-03-29 04:14:01       18 阅读
  8. MongoDB聚合运算符:$isArray

    2024-03-29 04:14:01       18 阅读