当前位置: 首页 > article >正文

【玉米田】

题目

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;

const int mod = 1e8;
const int M = 1 << 12;
LL f[13][M];
int g[13];
vector<int> state;
vector<int> p[M];
int n, m;
bool check(int x)
{
    return !(x & x << 1);
}
int main()
{
    cin >> m >> n;
    for(int i = 1; i <= m; i++)
    {
        for(int j = 0; j < n; j++)
        {
            int t;
            cin >> t;
            g[i] |= !t << j;
        }
    }
    
    for(int i = 0; i < 1 << n; i++)
    {
        if(check(i)) state.push_back(i);
    }
    
    for(auto a : state)
        for(auto b : state)
        {
            if((a & b) == 0) p[a].push_back(b);
        }
    
    f[0][0] = 1;
    for(int i = 1; i <= m+1; i++)
    {
        for(auto a : state)
        {
            f[i&1][a] = 0;
            if(a & g[i]) continue;
            for(auto b : p[a])
            {
                f[i&1][a] = (f[i&1][a] + f[(i-1)&1][b]) % mod;
            }
        }
    }
    
    cout << f[(m+1)&1][0];
    return 0;
}

注意

采用滚动数组时,一定要注意恢复,而且不仅是更新之前恢复,对于那些不更新的值也要恢复,因为不更新不代表继承上一次的值,而是采用默认值,因此必须恢复,下面的这个代码就闹了这个笑话

    f[0][0] = 1;
    for(int i = 1; i <= m+1; i++)
    {
        for(auto a : state)
        {
            f[i&1][a] = 0;
            if(a & g[i]) continue;
            //f[i&1][a] = 0;
            for(auto b : p[a])
            {
                f[i&1][a] = (f[i&1][a] + f[(i-1)&1][b]) % mod;
            }
        }
    }


http://www.kler.cn/news/319134.html

相关文章:

  • Springboot多种请求参数
  • Cloudera 安装不再难:下载安装全流程指南
  • 数据库基础01
  • 《使用 LangChain 进行大模型应用开发》学习笔记(四)
  • 【图论】最短路应用
  • 封面设计用什么软件最高效?分享5款新手必备工具
  • 数据报文解析
  • 【CSS】变量的声明与使用
  • 水电站/水库大坝安全监测系统完整解决方案
  • 抖音上下边框中间视频效果怎么做
  • 效率提升的秘密武器在快速编程领域的应用与探索
  • GPU架构原理与CUDA编程原理
  • 数据结构 ——— 常见的时间复杂度计算例题(中篇)
  • uniapp 中集成 axios 封装request,实现若依权限认证和若依 api方法共用
  • mysql学习教程,从入门到精通,SQL 联表查询(Join)(21)
  • Apache ZooKeeper 及 Curator 使用总结
  • 谷歌云推出全新区块链RPC服务:简化Web3开发
  • 设置VsCode搜索时排除文件,文件列表中隐藏文件
  • 5 php7.4中开发一个websocket 聊天 好友例表展示
  • 兼职副业想挖漏洞该用什么工具?零基础入门到精通,收藏这一篇就够了
  • python 实现support vector machines支持向量机算法
  • node-red-L1-如何设置让局域网可以访问?
  • 人工智能有助于解决 IT/OT 集成安全挑战
  • 世优科技“1+2+N”,助力湖南旅发大会“火出圈”
  • provide 和 inject
  • Kafka技术详解[3]: 生产与消费数据
  • 液体泄漏泼溅检测系统源码分享
  • 接口测试学习随笔 .. ..哪些参数为必填,以及接口测试中参数的含义.. ..
  • HarmonyOS Next鸿蒙扫一扫功能实现
  • Kubernetes监控、日志记录和运行时安全:CKS考试核心知识点实践